-1

当我给这个函数中的标志变量赋值时出现错误。实际上我希望我的意图代码将第二次运行。如何解决这个问题呢

    final boolean flag = false;
    final Spinner spnrContacts = (Spinner) findViewById(R.id.spnrContacts);
    ArrayAdapter<String> contactsAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, SelectContacts);
    contactsAdapter
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spnrContacts.setAdapter(contactsAdapter);

    spnrContacts
            .setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
            {
                public void onItemSelected(AdapterView<?> adapterView,
                        View view, int i, long l)
                {
                    // Your code 

                    if (flag)
                    {
                        Intent intent = new Intent(NewScheduleOptions.this,
                                TestActivity.class);
                        intent.putExtra("selectedType", i);
                        startActivity(intent);
                    }
                    flag = true;
                }

                public void onNothingSelected(AdapterView<?> adapterView)
                {
                    return;
                }
            });
4

3 回答 3

1

你可以让 flag 成为班级的成员。它不必是最终的,它可以在匿名类中访问

于 2012-10-06T08:50:19.837 回答
0
boolean flag = false;

将标志声明为全局变量

例如:

public class MainActivity extends Activity
{
   boolean flag;  <---------------
   oncreate(saved.....)
   {
       flag= false;
       //your code here
   }
}
于 2012-10-06T08:50:53.513 回答
0

你想让它第二次运行什么?如果您的意思是第二次启动此活动,那么您的代码将失败,因为每次启动此活动时 flag 都会初始化为 false。

您需要将标志值存储在共享首选项中。第一次运行时,在共享首选项中将其保存为 true。下一次,从共享首选项中读取标志并检查标志,如果它是真的,那么这意味着它是第二次运行活动并且你的代码将运行良好

于 2012-10-06T08:55:55.547 回答