如何将选定的值传递给另一个活动?

时间:2013-02-06 10:52:43

标签: android android-intent arraylist

我是android的新手..

我面临着意图问题..

我的问题是......我想将用户选择的值从一个活动的字符串arrayList传递给另一个活动......值是来自数据库的字符串通过JSON。这些值存储在一个arraylist ..

现在我需要将值从一个活动传递到另一个...使用intent ..

      lvForDialog = (ListView) viewList.findViewById(R.id.List_view);
        ArrayAdapter<String> adapter = (new ArrayAdapter<String>(Nexttopic.this, R.layout.row_topic, R.id.child_row,tnamelist));
        lvForDialog.setAdapter(adapter);        
        lvForDialog.setOnItemClickListener(new OnItemClickListener()
    {
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position,long id)        
          {            
        Intent intent = new Intent(Nexttopic.this,Question.class);     
    intent.putExtra(TAG_TOPICNAME, tname);

我想将TAG_TOPICNAME传递给另一个活动..用户选择我要传递的名称的主题名称......

怎么做?

非常感谢..

4 个答案:

答案 0 :(得分:3)

试试这个:

i.putExtra("Name", tname );
startActivity(i);

在您的第一个活动中,然后您可以将以下代码添加到第二个活动中并获取您的数据。

Intent intent = getIntent();
String Name = intent.getExtras().getString("Name");

编辑:将此作为示例在onitemclick Listener中获取所选项目

@Override public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
{ 
    Cursor GettName = (Cursor)viewList.getItemAtPosition(position);//Get a Cursor from the selected position to access the selected Item
    String tname = GettName.getString(GettName.getColumnIndex(CustomerDBAdapter.KEY_TNAME)); // get approporiate String from that cursor
    i.putExtra("Name", tname );
    startActivity(i);
}

答案 1 :(得分:1)

您应该在下面的行

之后调用代码中缺少的startActivity(learnintent);
Intent learnintent = new Intent(Nexttopic.this,Question.class);     
learnintent.putExtra(TAG_TOPICNAME, tname);

我希望你在使用它之前也定义了常量TAG_TOPICNAME

然后在Question活动中执行类似下面的操作来访问该值。

String topicName = intent.getIntent().getStringExtra(TAG_TOPICNAME);

这里TAG_TOPICNAME应该是我在之前的活动中分配的相同值,更好地定义class Constants并将此String保持为常量,并在两个地方使用它。

答案 2 :(得分:0)

最简单的方法是将会话ID传递给您用于启动活动的意图中的注销活动:

Intent intent = new Intent(getBaseContext(), SignoutActivity.class);
intent.putExtra("EXTRA_SESSION_ID", sessionId);
startActivity(intent)

Intents的docs有更多信息(请查看标题为“Extras”的部分)。

答案 3 :(得分:0)

您可以使用bundle传递值。您可以将其捆绑并使用intent传递它。示例代码如下所示....

bundle = new Bundle();         data1 = Double.valueOf(myEditText.getText()。toString());

    bundle.putDouble("data1", data1);

    Intent intent = new Intent(this, AnotherActivity.class);
    intent.putExtras(bundle);
    startActivity(intent);
    finish();

将其形成意图

的示例
 Bundle b = getIntent().getExtras();
        noqs = b.getDouble("data1");
        mTvCat.setText("hhhhhh"+point+noqs);

如果它对你有用,那么你可以将它存储在一个静态变量中。您可以从应用程序的任何位置访问它。