考虑3个屏幕1,2,3。我想从第一个屏幕在第二个屏幕中输入字符串(价格)。所以在第一个屏幕我做了putextra并在第二个屏幕得到了。现在我导航到第3个屏幕并点击第3个屏幕中的后退按钮我将回到第2个屏幕。现在该字符串(价格)显示为null。请纠正我。
我的代码:
屏蔽1:
Intent intent=new Intent(getApplicationContext(),IncomeDetails.class);
intent.putExtra("grpsdb", grp1);
startActivityForResult(intent,1);
屏幕2:
System.out.println("string="+intent.getStringExtra("grpsdb"));
Cursor c = db.getIncometitle(intent.getStringExtra("grpsdb"));
startManagingCursor(c);
屏幕3:
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent=new Intent(getApplicationContext(),IncomeDetails.class);
startActivity(intent);
}
答案 0 :(得分:2)
您获得String price
的 null 值,因为您正在从第3个活动开始第二个活动(IncomeDetails.class)。
如我所见,IncomeDetails.class
是您的第二个活动
并且您正尝试从第3个活动开始新的第2个活动,
使用代码,
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent=new Intent(getApplicationContext(),IncomeDetails.class);
startActivity(intent);
}
所以只需将finish()
第3个活动放入按钮的点击中......而不是再次启动第2个新活动。
类似的东西,
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
<Your_3rd_Activity_Name>.finish();
}
还有一件事,使用stratActivityForResult()
从第二个活动开始第三个活动,在开始第三个活动时不要finish()
第二个活动。
答案 1 :(得分:0)
您应该在第二个活动中使用startActivityForResult()
,并从那里使用呼叫活动3。
然后在activity 2中也使用`onActivityResult(int requestCode,int resultCode,Intent data)方法。
看一下这个例子:http://rahulonblog.blogspot.co.uk/2010/05/android-startactivityforresult-example.html
祝你好运:)