簡體   English   中英

如何將String從2個活動傳遞到一個活動?

[英]How to pass String from 2 activities to one?

我有兩個清單活動。

一種用於平板電腦,另一種用於普通密度電話。 單擊列表中的項目時,它會為具有列表的任一活動啟動相同的活動。

問題是當單擊一個項目時,我有一個getter和setter類,它獲取特定項目的URL並將其傳遞給這樣的啟動活動...

    private String URL = null;
try{
        URL = com.fttech.AbstractFeedsActivity.feed_url;

    }
    catch(IllegalArgumentException e){
        e.printStackTrace();
        URL = com.fttech.ItemsActivity.url;

    }

如您所見,我試圖做的就是抓住。 因此,如果找不到第一個,則將檢索第二個。

但這似乎不起作用。

每次返回null。

我所描述的是實現此目標的最佳方法是什么? 我的方式合乎邏輯嗎? 或者,還有更好的方法。

謝謝

嘗試這個,

     private String URL = null;
     try{
            URL = com.fttech.AbstractFeedsActivity.feed_url;
            if(TextUtils.isEmpty(URL)){
                 URL = com.fttech.ItemsActivity.url;
                 // Pass this URL   
            }
            else{
              // If its not empty then it will pass the first URL
          }
        }
        catch(IllegalArgumentException e){
            e.printStackTrace();
        }

無需將String傳遞給2個活動,如果您只想將字符串傳遞給一個或任意多個活動,只需將它們放在SharedPreferences中或在靜態類中聲明一個變量,然后在需要時進行設置/獲取即可。

將值從一個活動傳遞到另一個:

Intent intent = new Intent(context, CalledActivity.class);
intent.putExtra(key, value);
startActivity(intent);

如果要從調用的活動中返回一些數據,則可以將startActivityForResult()用作:

Intent intent = new Intent(context, CalledActivity.class);
intent.putExtra(key, value);
startActivityForResult(intent, requestCode);

在被叫活動中,您可以將數據設置為:

setResult(RESULT_OK, intent);

注意:在這里,您可以按意圖設置值,並將其傳遞給setResult()。

返回調用Activity時,您可以通過覆蓋以下內容獲取數據:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == RESULT_OK){
        //Get data from Intent "data" and do your task here....
    }
}

注意:您可以通過Intent傳遞原始數據類型值,如果要傳遞其他類型,則必須使用Bundle這樣。

Bundle data = new Bundle();
data.putIntArray(key, value);

//以同樣的方式可以設置其他值.... //現在像使用原始類型一樣,將此Bundle值設置為Intent。

Intent intent = new Intent(context, CalledActivity.class);
intent.putExtra(data);
startActivity(intent);

在活動中接收數據:

//對於原始值:

DataType var_name = getIntent().getExtras().get(key);

//對於Bundle值:

Bundle var_name = getIntent().getExtras().getBundle(key);

暫無
暫無

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

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