1

我不知道这个问题之前是否被问过,找不到任何关于此的信息:如何将通过 putExtra/getExtra 发送到另一个应用程序的空变量的值默认设置为非零?

让我解释一下原因并向您展示一个小架构以使事情更清楚:
在此处输入图像描述

如您所见,在我的应用程序中,我有一个与数据库通信并根据您单击的按钮发送不同信息的方法。所以对于每个按钮,我都有这样的代码:

private OnClickListener listener_button1 = new OnClickListener() {
    public void onClick(View v) {
        Intent t = new Intent(MainActivity.this,
                ResultListViewActivity.class);
        t.putExtra("myVariable1", 10);
        t.putExtra("myVariable3", 45);
        t.putExtra("myVariable2", 2);
        t.putExtra("myVariable4", 1000);
        startActivity(t);

由于我想让我的程序尽可能轻巧,我只是为每个按钮定义了一个方法,因为它在做同样的事情。问题是,并非每个按钮都发送相同数量的变量:有些只发送 1 或 2 个变量,有些最多发送 4 个变量。当它不发送任何东西时,getExtra() 会自动将值设置为 0,这在我的情况下很糟糕,因为 0 指的是我的数据库中的特定内容(我希望我的变量设置为 1000,因为 1000 没有特别指任何事物)。

所以我想总结一下,不必每次我不使用类似此代码的变量时都必须指定,而是找到一种方法使其成为自动化:

  t.putExtra("myVariable4", 1000);

我已经尝试在调用该方法的活动开始时像这样初始化值,但它不起作用:
int variable = 1000;

似乎这部分代码系统地将其设置为 0 :

Bundle bundle = getIntent().getExtras();
    int variable4 = bundle.getInt("variable4");

ps:我不想手动设置所有没有特定值的变量,因为在我的实际应用程序中,它远远超过 4 个输入和 3 个按钮,因此每个按钮侦听器都会非常繁重变量设置为 1000。
我希望我说得足够清楚!

4

2 回答 2

2

一般是这样的:-

bundle.getInt("passedVariable", defaultValue);

在您的情况下,由于默认值为1000,

bundle.getInt("variable4", 1000);应该为您解决问题。

有关docs的信息。

于 2013-03-08T04:59:16.213 回答
1

你可以设置一个默认值

bundle.getInt("variable4",default-value)
于 2013-03-08T05:00:36.473 回答