我是Android开发新手,我正在尝试使用模拟应用程序以便更好地学习。在它的当前状态下它有一个包含元素的ListView,但是我想要做的是点击ListView项目打开一个新活动并将文本传递给新活动中的TextView小部件。
到目前为止,我一直在这样做。
listView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
TextView locName = (TextView) view.findViewById(R.id.txtTitle);
String locValue = locName.getText().toString();
Toast.makeText(MainActivity.this, locValue, Toast.LENGTH_LONG);
Intent intent = new Intent(MainActivity.this, PaymentDetail.class);
intent.putExtra("location", locValue);
startActivity(intent);
}
});
onCreate for my second activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.payment_detail);
TextView locTitle = (TextView)findViewById(R.id.locationName);
Intent intent = getIntent();
String value = intent.getStringExtra("location");
locTitle.setText(value);
Toast.makeText(PaymentDetail.this, value, Toast.LENGTH_LONG);
}
这两个活动都在Manifest中定义,但是我不知道为什么会出现这个NPE。任何帮助将不胜感激。
答案 0 :(得分:1)
我做了一个带有一系列水果的示例应用
对于MainActivity
listView.setOnItemClickListener(new ListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String fruit = String.valueOf(adapterView.getItemAtPosition(i));
Toast.makeText(MainActivity.this, fruit, Toast.LENGTH_LONG).show();
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("fruit", fruit);
startActivity(intent);
}
});
对于SecondActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
TextView fruitName = (TextView)findViewById(R.id.myTextView);
Intent intent = getIntent();
String fruit = intent.getStringExtra("fruit");
fruitName.setText(fruit);
Toast.makeText(SecondActivity.this, fruit, Toast.LENGTH_LONG).show();
}
因此,不要使用getText()方法,而是尝试将项目放在适配器的位置并将其存储到String。
希望得到这个帮助。
答案 1 :(得分:-1)
检查吐司信息是否正在打印。因为您正在单击列表项。如果您使用自定义行,那么它将是一个布局。您必须遍历布局并传递值。否则,如果您使用的是Android列表项,则必须使用您单击的位置值从集合中获取字符串。