我在此函数中为标志变量赋值时出错。实际上我想要我的意图代码将在第二次运行。如何解决这个问题
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;
}
});
答案 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。下次,从共享首选项中读取标志并检查标志,如果是,则表示这是第二次活动运行且代码运行正常