【问题标题】:Sending Intent from Listview onItemClickListener error从 Listview onItemClickListener 错误发送 Intent
【发布时间】:2013-12-30 10:15:28
【问题描述】:

只是一个简单的问题,我猜我错过了一些非常简单明了的东西。以下代码在访问列表视图项时调用,并将 id 传递给下一个活动。我遇到了运行时错误,log cat 正在向我显示这个

error:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tim.apps.list/com.tim.apps.list.Challengeview}: java.lang.NumberFormatException: Invalid int: "null" 

这是我第一个活动的代码:

ListView lv = getListView();
   lv.setOnItemClickListener(new OnItemClickListener()
   {
      @Override
      public void onItemClick(AdapterView<?> adapter, View v, int position,
            long arg3) 
      {
            String index = (String)adapter.getItemAtPosition(position); 
            //Intent myIntent = new Intent(ChallengesList.this, Challengeview.class);
            //ChallengesList.this.startActivity(myIntent);
            Intent i = new Intent(getApplicationContext(), Challengeview.class);
            i.putExtra(index, position);
            startActivity(i);
      }
   });

在我的第二个活动中..

Bundle extras = getIntent().getExtras();
String value = extras.getString("index");

//Convert the passed id to a integer
int intvalue = Integer.parseInt(value);

非常感谢你们提供的任何帮助!

【问题讨论】:

    标签: android listview android-intent


    【解决方案1】:

    您将项目数据作为 key 并使用 "index" 的 key 检索数据

    改变

    Intent i = new Intent(getApplicationContext(), Challengeview.class);
    i.putExtra(index, position);
    

    Intent i = new Intent(getApplicationContext(), Challengeview.class);
    i.putExtra("index", position);
    

    在检索时,提供相同的密钥"index" 以获取数据..

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String value = extras.getString("index");
        // Convert the passed id to a integer
        int intvalue = Integer.parseInt(value);
    }
    

    【讨论】:

    • 我认为Challangeview是第二个活动
    【解决方案2】:

    您在两端都做错了(发送/接收)。您可以将其用作 i.putExtra(String,String)。在您的情况下,如果您想接收字符串,那么您只需在我将“”添加到位置时发送字符串。

     Intent i = new Intent(getApplicationContext(), Challengeview.class);
            i.putExtra("index", ""+position);
            startActivity(i);
    

    在接收端你必须这样做。

    String value =getIntent().getStringExtras("index");
    

    【讨论】:

    • 非常感谢!!我只用 android/java 编码了几个星期,所以非常感谢你的帮助!谢谢!
    • @TimJ 您可以接受答案以感谢我和其他人知道有用的答案..:)
    【解决方案3】:

    问题是您在每个活动中使用不同的键:

    String index = (String) adapter.getItemAtPosition(position);
    

    将返回您的项目的字符串表示形式。 因此,您的意图是: ItemString -> position 您想要的意图是:“索引”-> 位置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多