我想从第二个活动到第一个活动获得一个布尔值的意图。但是现在应用程序检查了intent并且我直接得到了一个空指针异常,我怎么能跳过发生的第一次检查并转到第二个活动,然后从那里将它发送回第一个而不会得到异常?我得到例外:
Boolean backButton=fromStartActivity.getExtras().getBoolean("backPress");
我的一些主要活动代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* Load the view and display it */
setContentView(R.layout.activity_main);
Firebase.setAndroidContext(this);
Intent fromStartActivity = getIntent();
Boolean backButton=fromStartActivity.getExtras().getBoolean("backPress");
if(backButton){
logout();
Intent back = new Intent(Intent.ACTION_MAIN);
back.addCategory(Intent.CATEGORY_HOME);
back.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//startActivity(back);
finish();
System.exit(0);
}
第二项活动:
@Override
public void onBackPressed(){
super.onBackPressed();
backButton=true;
Intent fromBack = new Intent(StartActivity.this,MainActivity.class);
fromBack.putExtra("backPress",backButton);
startActivity(fromBack);
}
答案 0 :(得分:2)
您可以使用
startActivityForResult(Intent, key)
来自您的第一个活动
从退出活动中,执行
@Override
public void onBackPressed(){
setResult(RESULT_OK, code);
finish();
}
答案 1 :(得分:1)
您可以在从意图
获取数据之前应用检查$canonical_request = $url . $http_method . $date;
答案 2 :(得分:1)
从FirstActivity使用startActivityForResult()方法调用SecondActivity
例如:
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);
在SecondActivity中设置要返回FirstActivity的数据。如果您不想退回,请不要设置任何内容。
例如:在secondActivity中,如果要发回数据:
Intent returnIntent = new Intent();
returnIntent.putBoolean("result",true);
setResult(Activity.RESULT_OK,returnIntent);
finish();
如果您不想返回数据:
Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();
现在,在您的FirstActivity类中,编写onActivityResult()方法的以下代码。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
Boolean result=data.getBoolean("result");
}
if (resultCode == Activity.RESULT_CANCELED) {
//Write your code if there's no result
}
}
}
答案 3 :(得分:0)
您已将其他内容直接添加到intent中,但尝试使用intent bundle进行访问。
试试这个.. 替换以下代码
ackButton=fromStartActivity.getExtras().getBoolean("backPress");
与
ackButton=fromStartActivity.getBoolean("backPress");