簡體   English   中英

加載新活動時,將選定項從ListView Android傳遞到另一個活動會引發NullPointerException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM