Java 将所选项目从ListView Android传递到另一个活动会在加载新活动时引发NullPointerException
我是Android开发的新手,我正在尝试开发一个模拟应用程序,以便更好地学习。在其当前状态下,它有一个包含元素的ListView,但是我尝试的是在单击ListView项时打开一个新活动,并将文本传递给新活动中的TextView小部件 这就是我到目前为止一直在做的事情Java 将所选项目从ListView Android传递到另一个活动会在加载新活动时引发NullPointerException,java,android,listview,android-listview,Java,Android,Listview,Android Listview,我是Android开发的新手,我正在尝试开发一个模拟应用程序,以便更好地学习。在其当前状态下,它有一个包含元素的ListView,但是我尝试的是在单击ListView项时打开一个新活动,并将文本传递给新活动中的TextView小部件 这就是我到目前为止一直在做的事情 listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(A
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);
}
});
这两个活动都在清单中定义,但是我不知道为什么会出现这个NPE。任何帮助都将不胜感激。检查toast消息是否正在打印。因为您正在单击列表项。如果您使用的是自定义行,那么它将是一个布局。您必须遍历布局并传递值。否则,如果您使用的是android列表项,则必须使用单击的位置值从集合中获取字符串 我用一系列水果做了一个示例应用程序 主要活动
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);
}
});
因此,不要使用getText()方法,而是尝试在适配器的位置获取项并将其存储到字符串中
希望这有帮助。发布日志,记录NPE显示的确切位置。您可以发布错误日志吗?顺便说一句,您的toast不会显示,因为您没有在toast.makeText(ForBothActivity.this,value,toast.LENGTH\u LONG)结尾调用“.show();”;给你们。04-04 16:24:41.727:E/AndroidRuntime(10136):java.lang.RuntimeException:无法启动活动组件信息{com.example.eazymocky/com.example.eazymocky.PaymentDetail}:java.lang.NullPointerException,而不是使用TextView locName=(TextView)view.findViewById(R.txtTitle);字符串locValue=locName.getText().toString();您可以通过位置获取适配器值,字符串locValue=YourAdapterClass)parent.getItem().getText().toString();
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);
}
});
@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();
}