如何将数据从活动传递到另一个活动,然后传递到Android上的另一个活动?

时间:2014-10-15 17:08:47

标签: android eclipse android-intent onclick onitemclicklistener

我设法将数据从列表活动传递到另一个活动。但是,从第二个活动到第三个活动,我怀疑我可以传递与应用程序崩溃相同的数据,当它进入第三个时。是不是可以从第1个活动开始发送相同的数据,或者行中有什么问题吗?

这是第一个活动

ListView lv = getListView();

    // on selecting single product
    // launching Edit Shops Screen
    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // getting values from selected ListItem
            String sid = ((TextView) view.findViewById(R.id.sid)).getText()
                    .toString();

            // Starting new intent
            Intent in = new Intent(getApplicationContext(), ShopPage.class);
            // sending sid to next activity
            in.putExtra(TAG_SID, sid);

            // starting new activity and expecting some response back
            startActivity(in);
        }
    });

这是第二项活动:

        // getting shop details from intent
        Intent i = getIntent();

        // getting shop id (sid) from intent
        sid = i.getStringExtra(TAG_SID);

editButton.setOnClickListener(new OnClickListener()
        {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            sid = ((TextView) v.findViewById(R.id.sid)).getText()
                    .toString();

            // Starting new intent
            Intent e = new Intent(getApplicationContext(),
                    EditShopPage.class);
            // sending sid to next activity
            e.putExtra(TAG_SID, sid);
            startActivity (e);
            }
    });

这是第三项活动:

    // getting shop details from intent
    Intent i = getIntent();

    // getting shop id (sid) from intent
    sid = i.getStringExtra(TAG_SID);

第一个活动来自ListView活动,其中数据通过onItemClickListener传递。然后第二个活动接收,但通过onClick(一个按钮)传递到下一个活动。在此之后,应用程序才停止运行。

2 个答案:

答案 0 :(得分:0)

如果没有日志,我无法查看错误的来源。大多数情况下,当我必须将一个简单的变量(如String)从一个活动传递到另一个活动时,我会使用此代码。我希望它能有所帮助。

第一项活动:

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
Bundle bundleF = new Bundle();
bundleF.putString("type", NOTIF);               
intent.putExtras(bundleF);
startActivity(intent);

第二项活动:

getIntent().getExtras().getString("type")

答案 1 :(得分:0)

在第二个活动中: 删除下面的代码,因为你已经有来自第一个Activity的sid。

sid = ((TextView) v.findViewById(R.id.sid)).getText()
                .toString();

在你已经完成的Intent中从sid添加i.getStringExtra(TAG_SID);。如果您的IDE显示任何make sid变量final或将其声明为Activity成员变量。

希望它会有所帮助。