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);
}
答案 0 :(得分:0)
您可以采取的一种方法是将indicate
保存到SharedPreferences
至PreferenceManager.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);
}