この質問が以前に尋ねられたかどうかはわかりませんが、これに関する情報が見つかりませんでした: 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 つのメソッドを定義しました。問題は、すべてのボタンが同じ数の変数を送信するわけではないことです。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
に設定された変数の数。