如何将String从2个活动传递给一个?

时间:2011-09-24 16:28:14

标签: java android

我有两个列表活动。

一个用于平板电脑,一个用于普通密度手机。 单击列表中的项目时,它会为列表的任一活动启动相同的活动。

问题是当点击一个项目时我有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。

我已经描述了实现这个的最佳方法是什么? 我的逻辑方式是什么?或者有更好的方法。

由于

3 个答案:

答案 0 :(得分:2)

试试这个,

     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();
        }

答案 1 :(得分:0)

如果您只想将字符串传递给一个或多个活动,只需将它们传递给 SharedPreferences ,或者在静态类中声明一个变量,那么就不需要将String传递给2个活动。随时设置/获取它。

答案 2 :(得分:0)

将值从一个活动传递到另一个活动:

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

如果您想从被调用的Activity返回一些数据,那么您可以使用startActivityForResult()作为:

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

在被叫活动中,您可以将数据设置为:

setResult(RESULT_OK, intent);

注意:在这里设置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);