Java 将所选项目从ListView Android传递到另一个活动会在加载新活动时引发NullPointerException

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

我是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);

        }

    });

这两个活动都在清单中定义,但是我不知道为什么会出现这个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();
}