3

在我的来电活动中:

 protected void onListItemClick(ListView l, View v, int position, long id) {


          Intent myIntent = new Intent(MainActivity.this, sondaggioActivity.class);
          myIntent.putExtra("categoriaId", String.valueOf(id));
          MainActivity.this.startActivity(myIntent);
        // Toast.makeText(this, String.valueOf(id), Toast.LENGTH_LONG).show();
        }   

toast 返回在列表中单击的项目的 id 的正确值。关于我的接收者活动:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.maindomanda);

        int category = getIntent().getExtras().getInt("categoriaId"); 
        TextView text = (TextView) findViewById(R.id.domanda);
        text.setText(String.valueOf(category));
    }

一个非常简单的......文本字段总是返回0......我做错了什么?String.ValueOf() 是否以某种方式被弃用?或者更好地使用其他东西......还有另一个问题......我通过long id就像我知道我在做什么一样,这是非常错误的......它是所谓的“ _ID”字段吗?我从 dbtable 中获取这些值,是那个表 ID 吗?

4

3 回答 3

2

将您的代码更改为:

String strcategory = getIntent().getExtras().getString("categoriaId"); 

因为您正在String从 onListItemClick 传递到 sondaggioActivity Activity 并尝试接收为Int

笔记 :

第二点也是重要的一点是idlong您正在尝试将其解析为Int无效的。请参阅这篇文章:如何在 Java 中将 long 转换为 int?

onListItemClick解决方案是只要发送 id

 myIntent.putExtra("categoriaId",id);

sondaggioActivity并像在Activity中一样接收它:

long category = getIntent().getExtras().getLong("categoriaId");
于 2012-12-20T15:32:50.193 回答
1

你得到一个 int getInt("categoriaId"),你传入了一个字符串putExtra("categoriaId", String.valueOf(id)); String.valueOf(); 返回 int 的字符串表示形式。

于 2012-12-20T15:33:35.040 回答
0

传递 categoriaId,只要 myIntent.putExtra("categoriaId", id);

于 2012-12-20T15:38:40.367 回答