簡體   English   中英

使用意圖在活動之間傳遞字符串值

[英]Passing String Values between Activities using intents

我了解如何使用意圖將字符串值從MainActivity傳遞到SecondaryActivity,但是您將如何實現Vise Versa。 這是我正在使用的代碼,我只是不知道將接收類代碼放在哪里。

在我的SecondActivity中

Intent intent = new Intent(SecondActivity.this, MainActivity.class);
String TimeValue = ("00:00:00");
intent.putExtra("TimeValue", TimeValue);
startActivity(intent)

這是我不確定將代碼放在哪里的代碼,因此在應用啟動時不會崩潰

String intent = getIntent().getExtras().getString("TimeValue");
TextView timeText = (TextView)findViewById(R.id.timeText);
timeText.setText(intent);

問題是MainActivity不會總是以SecondActivity的意圖創建的。 它也將在啟動應用程序時創建。

在嘗試從中獲取附加功能之前,您需要確保extras確實存在! 可能為空!

因此,應在為視圖充氣后將其放在onCreate方法中。

Bundle extras = getIntent().getExtras();

String intentString;
if(extras != null) {
    intentString = extras.getString("TimeValue");
} else {
    intentString = "Default String";
}
TextView timeText = (TextView)findViewById(R.id.timeText);
timeText.setText(intentString);

我也強烈建議您將字符串的名稱更改為“ intentString”,而不是“ intent”。 名稱“ intent”通常用於實際的Intent對象,而不是從Intent獲取的String 因此,將其命名為“ intentString”會使其他開發人員更容易理解。

如果您試圖將數據從SecondActivity傳遞回MainActivity,請改用startActivityForResult

啟動SecondActivity並准備將數據傳遞回MainActivity后,創建一個新的Intent並使用SecondActivity.setResult(resultCode, Intent); 然后調用finish,以完成SecondActivity。

現在,在MainActivity中,您將調用onActivityResult() ,這將為您提供您在SecondActivity中作為數據參數傳遞的Intent。

您可以查看此鏈接以獲取更多信息: http : //developer.android.com/training/basics/intents/result.html

暫無
暫無

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

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