0

onCreate メソッドから別のメソッドに char1 を渡すにはどうすればよいですか? この場合は selectChar2 に渡しますか? char1 と char2 をグローバルにすることはできますか? これについて何が適切な方法なのかわかりません。助けてください!

private String char1,char2; // does this even do anything? I thought this would let me use char1 and char2 anywhere.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pick_char2);

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String char1 = (String) extras.getString("char1"); //is the (String) necessary?

        TextView textView = (TextView) findViewById(R.id.header);

        textView.setText(char1+" vs "+"char2");

    }


}

public void selectChar2(View v) {
    Button btn = (Button)v;
    String char2 = btn.getText().toString();
    Intent intent = new Intent(PickChar2.this, DisplayMatchUp.class);
    Bundle extras = new Bundle();

    extras.putString("Character1",char1); //char1 here is null...how do I get the value from the method above?
    extras.putString("Character2", char2);

    intent.putExtras(extras);
    startActivity(intent);
4

4 に答える 4

2

このままでは、2 つの別個の変数を宣言して使用しています。

  1. インスタンス変数: char1
  2. ローカル変数: char1

1 はクラス インスタンスにスコープされます (クラス内の任意の非静的スコープでアクセスできます)。2 は、それが定義されているブロックにスコープされます。この場合、単純にローカル変数を作成せず、インスタンス変数を使用します。

    char1 = (String) extras.getString("char1");
于 2013-06-27T20:54:13.867 に答える
1

既に変数をグローバルとして宣言しましたが、後で同じ名前のローカル変数を宣言しました。代わりにローカル変数が使用されます。代わりにグローバル変数が使用されるようにするには、「this」キーワードを使用します。

this.char2

グローバル変数 char2 を参照します

char2

ローカル変数 char2 を参照します

于 2013-06-27T21:00:19.487 に答える
0

おそらく公開するか、両方のメソッドでパラメーターにする必要があります。

于 2013-06-27T20:54:26.727 に答える
0

プログラムの先頭で、グローバル変数を作成していますchar1...

private String char1,char2;

しかし、onCreate()メソッドには次の行があります...

String char1 = (String) extras.getString("char1");

行の先頭にある文字列という単語は、プログラムの先頭で作成しているグローバル変数とは別のローカル変数を作成しています。char1char1

これを単純にするには、を削除する必要がありStringます...

char1 = (String) extras.getString("char1");

これにより、プログラムの先頭にあるグローバル変数に値が割り当てられ、このクラス内の任意の場所で使用できるようになります。

于 2013-06-27T20:55:32.880 に答える