我正在尝试将数据从列表视图传递到它打开的活动。但是当点击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);
非常感谢任何帮助。
答案 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");