在第一项活动中获取意图

时间:2016-04-27 11:34:34

标签: android android-intent nullpointerexception

我想从第二个活动到第一个活动获得一个布尔值的意图。但是现在应用程序检查了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);



    }

4 个答案:

答案 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");