Android:将变量从一个活动拉到另一个活动并设置textview。

时间:2013-12-27 15:08:38

标签: android android-intent

我正在尝试将一个活动意图中的变量引入另一个活动,并使用它设置textview。这是一些代码:

//First Activity
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);

    Cursor c = mNotesCursor;
    c.moveToPosition(position);
    Intent i = new Intent(this, showID.class);
    i.putExtra(HDWDBHelper.KEY_ROWID, id);
    myId = String.valueOf(id);
    i.putExtra(myId, id);
    Log.v("ID: ", myId);

    startActivityForResult(i, ACTIVITY_SHOW);


}

//Second Activity

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.showid);

    idNumber = (TextView) findViewById(R.id.textView1);
    Intent myIntent = getIntent();
    Bundle b = myIntent.getExtras();
    Long id = b.getLong("id");
    String myId = String.valueOf(id);
    Log.v("ShowID: ", myId);
    idNumber.setText(myId.toString());

}

我看不出我做错了什么。

3 个答案:

答案 0 :(得分:0)

myId = String.valueOf(id);
    i.putExtra(myId, id);

您使用的是id值作为键。

myId = "id";

应该有效

编辑*:如果你想要传递一个字符串,那么

myId = String.valueOf(id);
    i.putExtra(myId, "id");

然后收到它

String myId = b.getString("id");

答案 1 :(得分:0)

您可以将原始数据从一个活动传递到另一个活动,如下所示。

定义常量,该常量将用作传递数据的键。

public static final String EXTRA_YOUR_KEY = "EXTRA_YOUR_KEY";

将值作为密钥对添加到您用于开始新活动的Intent

// code snippet for first activity
long myId = 10;
Intent activityIntent = new Intent(activity-context, ClassNameOfNewActivity.class);
activityIntent.putExtra(EXTRA_YOUR_KEY, myId);
startActivity(activityIntent);

接下来,在新活动的onCreate()中,将传递的值提取为

// code snippet from second activity's onCreate method
Intent intent = getIntent();
long id = intent.getLongExtra(ClassNameWhichContains.EXTRA_YOUR_KEY, 0);

我使用long作为示例,因为您尝试传入long变量。同样,你可以计算出其他原语。

要在两个活动之间传递自定义对象,您可以参考this

希望这有帮助。

答案 2 :(得分:0)

如上所述,额外内容实际上是键值对,因此当插入附加内容时,您必须使用接收方已知的“密钥”,以便能够通过该名称从捆绑中提取该值。不幸的是,关键可能是你所使用的任何东西,但这个值并不是你在接收器方面所知道的。试试这个 -

发送方:

i.putExtra("id", id);

接收方:

Long id = b.getLong("id");