我不知道这个问题之前是否被问过,找不到任何关于此的信息:如何将通过 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。
我希望我说得足够清楚!