在android中使用final变量

时间:2012-10-06 08:47:46

标签: android android-spinner

我在此函数中为标志变量赋值时出错。实际上我想要我的意图代码将在第二次运行。如何解决这个问题

    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;
                }
            });

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

boolean flag = false;

将标志声明为全局变量

代表:

public class MainActivity extends Activity
{
   boolean flag;  <---------------
   oncreate(saved.....)
   {
       flag= false;
       //your code here
   }
}

答案 2 :(得分:0)

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

您需要将标记值存储在共享首选项中。第一次运行时,将其保存为共享首选项中的true。下次,从共享首选项中读取标志并检查标志,如果是,则表示这是第二次活动运行且代码运行正常