![](/img/trans.png)
[英]Passing data between screens using the Navigator.pushNamed () function in Flutter
[英]Passing string between screens
考慮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);
}
您將獲得String price
空值,因為您正在從第3個Activity中再次啟動第二個Activity (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()
從第二個Activity開始第3個Activity,在你開始第3個Activity時不要finish()
第二個Activity。
您應該在第二個活動中使用startActivityForResult()
並從那里調用活動3.然后在活動2中也使用`onActivityResult(int requestCode,int resultCode,Intent data)方法。 看看這個例子: http : //rahulonblog.blogspot.co.uk/2010/05/android-startactivityforresult-example.html
祝好運 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.