如何返回以前具有来自其他活动的额外活动

时间:2016-09-18 16:35:11

标签: java android

A - > B - > C - >回到B

其中A必须向B发送一个额外的,而B有一个按钮(后退按钮)到C.当从C按下后退按钮时,它必须返回到B,它仍然有来自A的额外。基本上,B和C来回走动,两者都保持不变,没有数据被破坏。

但是,在我的情况下,它会回到A,如果我使用finish()startActivity()应用程序崩溃,说它是NullPointerException。我认为这是因为B没有从A收到任何额外的,因为它是C,它正在呼叫B.

我是否应该将A的额外费用从B传递给C并再次传回B?应该怎么做?

A

String indicate = textView.getText().toString();
Intent t = new Intent(getApplicationContext(), Details.t.putExtra("indicate", indicate);
startActivity(t);
finish();

B(onCreate())

Intent g = getIntent();
String indica = g.getExtras().getString("indicate");
TextView diseaseLabel = (TextView) findViewById(R.id.statusTxt);
diseaseLabel.setText(indica);

C

public boolean onOptionsItemSelected(MenuItem item) {
    //finish();
    //Intent i = new Intent(this.context, B.class);
    //startActivity(i);
    return super.onOptionsItemSelected(item);

}

2 个答案:

答案 0 :(得分:0)

您可以采取的一种方法是将indicate保存到SharedPreferencesPreferenceManager.getDefaultSharedPreferences(Context context),这样您就不会继续传播。

然而顾名思义,这通常用于首选项或设置。但是你明白了,对吗?

答案 1 :(得分:0)

您需要使用startActivityForResult才能返回B活动而不会销毁数据。

例如,当您在B活动时,使用以下代码启动C活动

Intent intent = new Intent(B.this, C.class);
startActivityForResult(intent, REQUEST_RESULT_CODE); //suppose resultCode == 2;

当您需要返回B活动时,请使用以下代码

public boolean onOptionsItemSelected(MenuItem item) 
{
   Intent intent = new Intent();
   setResult(RESULT_OK, intent);
   finish();
   return super.onOptionsItemSelected(item); 
}