簡體   English   中英

如何在活動之間傳遞值

[英]How to pass values between activity

我創建了3個活動: firstActivitysecondActivitythirdActivity

  1. firstActivity是主要活動。
  2. secondActivity僅在收到SMS時才有效,然后將消息發送到thirdActivity
  3. thirdActivity將字符串值轉換為double值,然后將double值發送到firstActivity

我可以將值從secondActivity發送到thirdActivity ,但我不知道如何將值從thirdActivity傳遞給firstActivity 請告訴我如何做到這一點。

有幾種方法可以解決這個問題。

一種是使用自定義應用程序類來存儲整個應用程序的“全局值”。 這樣,你會在設定的值firstActivity和使用它們thirdActivity

看看這個 SO問題,了解如何在Android應用程序中存儲全局狀態。

每當你有一個調用結果的活動時,就像在這種情況下你有thirdActivity一樣,你總是可以使用方法startActivityForResult而不僅僅是startActivity。 一旦thirdActivity完成了它的處理並且想要返回結果值,它應該調用setResult,就是這樣。

這種方法的問題在於你在中間有第二個活動。 真的有必要嗎?

謝謝您的幫助。 現在我可以將值從thirdActivity傳遞給firstActivity,這就是我的工作方式。

第三活動:

public class ThirdActivity extends Activity {

double value1, value2;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ...

    value1 = Double.parseDouble(value1FromSecondActivity);
    value2 = Double.parseDouble(value2FromSecondActivity);      

    Intent intent = new Intent(this, FirstActivity.class);
    intent.putExtra("Value1", value1);
    intent.putExtra("Value2", value2);
    startActivity(intent);
    finish();
    }
} 

FirstActivity:

public class FirstActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ...
}   

@Override
protected void onResume() {
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        dValue1 = extras.getDouble("Value1");
        dValue2 = extras.getDouble("Value2");
        Toast.makeText(getBaseContext(), dValue1 + " : " + dValue2, Toast.LENGTH_SHORT).show();
    }
    else {
        Toast.makeText(getBaseContext(), "Null", Toast.LENGTH_SHORT).show();
    }
    super.onResume();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM