我在两个活动之间传递一个意图值来动态更改数据..
我正在onCreate的家庭活动中从结束活动传递的价值如此 -
// Get Variable From Home Activity
Bundle extras = getIntent().getExtras();
String curhole;
curhole = extras.getString("hole");
TextView holeno = (TextView) findViewById(R.id.holeNumber);
holeno.setText(String.valueOf("Hole " + curhole));
我在家庭活动中有这个onClick功能 -
@Override
public void onClick(View v) {
// Get Variable From Home Activity
Bundle extras = getIntent().getExtras();
String curhole;
curhole = extras.getString("hole");
Intent myIntent = new Intent(this, end.class);
myIntent.putExtra("hole",curhole);
startActivity(myIntent);
}
然后在我的最后活动中,我抓住了这个值并将其传递回家庭活动 -
@Override
public void onClick(View v) {
Bundle extras = getIntent().getExtras();
String curhole;
curhole = extras.getString("hole");
int incHole = Integer.parseInt(curhole);
incHole++;
String.valueOf(incHole);
Intent myIntent = new Intent(this, hole.class);
myIntent.putExtra("hole",incHole);
startActivity(myIntent);
}
当我点击主页活动按钮转到结束活动并返回主页时,它表示值为空。任何想法为什么?我是android的新手,所以我确定我的方法可能很糟糕。
谢谢!
答案 0 :(得分:2)
可能是因为您需要获取onResume()
中的值,因为看起来您不会查看Home
活动,因此不会再次调用onCreate()
。
你可能想在这种情况下使用startActivityForResult()
,但通过这种方式会有效。
此外,Intent
有一个[getIntExtra()
](https://developer.android.com/reference/android/content/Intent.html#getIntExtra(java.lang.String,int))方法,因此我不确定您是否需要进行所有正在进行的转换。
答案 1 :(得分:1)
分享更多。为什么要将int
作为String
发送?
int incHole = Integer.parseInt(curhole);
incHole++;
//Should work as String or int
Intent myIntent = new Intent(this, hole.class);
myIntent.putExtra("hole", incHole);
startActivity(myIntent);
如果有帮助,请告诉我。请检查此link。
答案 2 :(得分:1)
我会通过home活动的意图传递给变量的end活动,但是以startActivityForResult()开始活动;然后在家庭活动上你应该重写onActivityResult();从结束活动中获取变量的方法。
检查this tutorial of activity result阅读2.3。从子活动中检索结果数据
答案 3 :(得分:0)
按home键然后在saveInsatance()活动方法中保存包。