我有兩個活動,通過每個活動的片段在一個屏幕上並排顯示。 我想發送一個字符串,當我點擊一個活動的按鈕,然後其他活動應該檢索我發送的字符串。是否可以在不啓動新活動的情況下調用putExtras()和getExtra()?
我知道可以用經典的方法setString()
和getString()
方法來做到這一點。但我想知道,如果不在新屏幕上打開目標活動,是否可以用putExtra()
和getExtra()
完成?
我喜歡任何一種解決方案。 謝謝
我有兩個活動,通過每個活動的片段在一個屏幕上並排顯示。 我想發送一個字符串,當我點擊一個活動的按鈕,然後其他活動應該檢索我發送的字符串。是否可以在不啓動新活動的情況下調用putExtras()和getExtra()?
我知道可以用經典的方法setString()
和getString()
方法來做到這一點。但我想知道,如果不在新屏幕上打開目標活動,是否可以用putExtra()
和getExtra()
完成?
我喜歡任何一種解決方案。 謝謝
您可以同時活動的intent
爲全局變量並嘗試使用從一個活動putExtra()
,然後由另一活動getExtra()
。
例如,
public class activityOne extends Activity
{
public static Intent intent = null;
@Override
protected synchronized final void onCreate(final Bundle savedInstanceState)
{
intent = getIntent();
}
}
public class activityTwo extends Activity
{
public static Intent intent = null;
@Override
protected synchronized final void onCreate(final Bundle savedInstanceState)
{
intent = getIntent();
}
}
現在,只要你願意,你可以訪問他們的意圖一樣activityOne.intent,activityTwo.intent
其次空檢查
我在一個方法上調用此方法Intent listIntent = new Intent(this,DetailsActivity.class); \t \t listIntent.putExtra(「text」,vidLocation.text);並在另一個方法上像這樣檢索它Bundle extras = getIntent()。getExtras(); \t \t text = extras.getString(「text」);但它不起作用 – hectichavana
你的接收部分應該在你的DetailsActivity類中。 –
我知道我已經有 – hectichavana
您可以發送意圖作爲廣播並具備接收片段寄存器廣播開始(並註銷其銷燬)。
發送片段:
Intent intent= new Intent(PARAM_TRANSFER);
intent.putExtra(key, extra);
sendBroadcast(intent);
接收片段:
寄存器:
IntentFilter intentFilter = new IntentFilter(PARAM_TRANSFER);
registerReceiver(mReceiver, intentFilter);
註銷:
try {
unregisterReceiver(mReceiver);
} catch (Exception e) {}
得到PARAM:
private class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
intent.getExtra(key);
}
}
註冊和取消註冊的功能是什麼? – hectichavana
應該接收意圖寄存器/取消註冊作爲該廣播的監聽器的片段,請閱讀BroadcastReceivers我認爲這正是您需要的 – marmor
查看我的更新回答 –
你能在下面看到我的進一步問題嗎? thx – hectichavana