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

时间:2017-03-12 15:55:14

标签: android listview

我正在尝试将数据从列表视图传递到它打开的活动。但是当点击listView时它会崩溃我的应用程序。

我看不出我的代码出了什么问题,看了很多其他的例子,我不确定出了什么问题。在我开始尝试传递数据之前,listView工作正常。

public class SuitableFarmerActivity extends AppCompatActivity {


        private String[] farmerArray = {"John Smith, 28 days, £2800", "Ben Shaw, 31 days, £2400", "Tom Freer, 32 days, £3400", "Sam Jones, 24 days, £3600"};

        private ListView farmerListView;
        private ArrayAdapter arrayAdapter;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_suitable_farmer);

            farmerListView = (ListView) findViewById(R.id.farmerList);

            arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, farmerArray);
            farmerListView.setAdapter(arrayAdapter);

            farmerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position,
                                        long id) {

                    Object obj = farmerListView.getAdapter().getItem(position);
                    String value= obj.toString();
                    Intent confirm = new Intent(SuitableFarmerActivity.this, ConfirmOrderActivity.class);
                    confirm.putExtra("value", value);

                    startActivity(confirm);

                }
            });
        }

}

以上是我的活动代码。

下面是我用来尝试在下一个活动中检索数据的代码。

  Bundle recdData = getIntent().getExtras();
    String myVal = recdData.getString("value");

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_confirm_order);

        TextView textView = (TextView)findViewById(R.id.textView);

        textView.setText(myVal);

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

我一发布问题就找到了答案。

对于有这个问题的其他人,我通过将我在第二个活动中检索数据的位置移动到onCreate()内部来修复它

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_confirm_order);
    Bundle recdData = getIntent().getExtras();
    String myVal = recdData.getString("value");

    TextView textView = (TextView)findViewById(R.id.textView);

    textView.setText(myVal); }

希望这可以帮助任何有这个问题的人。

答案 1 :(得分:1)

在oncreate方法中写下以下代码,而不是在oncreate之外。

 Bundle recdData = getIntent().getExtras();
String myVal = recdData.getString("value");