[英]Passing an _id from one activity to another when ListView item is clicked
[英]Passing selected item from ListView Android to another Activity throws a NullPointerException when loading the new activity
我是Android開發的新手,我正在嘗試開發一個模擬應用程序,以便更好地學習。 在其當前狀態下,它具有一個包含元素的ListView,但是我想做的是單擊ListView Item時打開一個新活動,並將文本傳遞給新活動中的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我的第二個活動
@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);
}
這兩個活動都在清單中定義,但是我不知道為什么會出現此NPE。 任何幫助將不勝感激。
我做了一個帶有一系列水果的示例應用程序
對於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中。
希望能有所幫助。
檢查吐司消息是否正在打印。 因為您正在單擊列表項。 如果您使用的是自定義行,那么它將是一個布局。 您必須遍歷布局並傳遞值。 否則,如果您使用的是Android列表項,則必須使用要單擊的位置值從集合中獲取字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.