0

現在、アクティビティ間で文字列を渡そうとしています。文字列は、2 番目のアクティビティで画像を設定するために使用されます。したがって、ユーザーは最初のアクティビティでボタンをクリックすると、選択された内容に基づいて適切な画像が 2 番目のアクティビティに読み込まれます。最初のアクティビティには 3 つのボタンがあり、すべて次のアクティビティに文字列値を送信する必要があります。

これは私の最初の活動で私が持っているものです:

Button archerButton = (Button) findViewById(R.id.Button_Archer);
archerButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        String selection = "archer";
        Bundle basket = new Bundle();
        basket.putString("key", selection);
        Intent i = new Intent(SelectCharacterActivity.this, LevelOneActivity.class);
        i.putExtras(basket);
        startActivity(i);
        finish();
        }
    });
}

受信アクティビティには次のコードがあります。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    setContentView(R.layout.level_one);

    ImageView img = (ImageView) findViewById(R.id.Character_Chosen);

    Bundle extras = getIntent().getExtras();
    String Toon = extras.getString("key");

    if(Toon=="archer"){
        img.setImageResource(R.drawable.archer);
    }

    if(Toon=="mage"){
        img.setImageResource(R.drawable.mage);
    }
    if(Toon=="warrior"){
        img.setImageResource(R.drawable.warrior);
    }
}     

値 Toon を手動で設定すると画像が読み込まれるため、receive if ステートメント セクションが機能することはわかっています。そのため、どこかで情報が適切に送信されていないか、読み取られていません。私はオンラインでチュートリアルに従いましたが、これに困惑しています。

4

5 に答える 5

2

文字列を間違って比較しています。

Toon=="Anything"

真になることはありません。使用する必要があります

Toon.equals("Anything")

それが機能するために。

編集:

これは、"==" が文字列のメモリ アドレスを比較するだけで、"Anything" が割り当てられたばかりで、Toon と一致しないためです。ただし、.equals は実際には文字列内の文字を比較します。

また、このようなことをテストするには、

Log.i("YourAppName", "Toon value is: " + Toon);

String Toon = extras.getString("key");
于 2013-02-18T15:08:16.750 に答える
2

問題は Java 101 です。文字列の等価性テストはequalsメソッドを使用して行われます。

Toon.equals("archer");

追加のヒント: null ポインター例外を回避するためにテストを逆にします。

"archer".equals(Toon);

追加のヒント: ケースが相互に排他的であることを考慮して、if else if を使用して、すべてのケースをテストしないようにします。

于 2013-02-18T15:08:37.903 に答える
0

を使ってみてSharedPreferences、後/ボタンクリックで設定し、2.アクティビティで取得しますOnCreate

于 2013-02-18T15:04:15.720 に答える
0

単純な文字列を渡したいだけの場合は、次を使用できます。

送信時:

    Intent i = new Intent(SelectCharacterActivity.this, LevelOneActivity.class);
    i.putExtra("key", selection);
    startActivity(i);

受け取り時:

    String selection = getIntent().getStringExtra("key");

このキーを持つパラメーターがない場合、選択は null になります。

于 2013-02-18T15:07:00.283 に答える
0

これを試して

Intent i = new Intent(FirstActivity.this, SecondActivity.class); i.putExtra("email", "lol@hotmail.com"); startActivity(i);

Intent i = getIntent(); String myemail = i.getStringExtra("email");

さらに、文字列を比較するには、.equals()notを使用します==

于 2013-02-18T15:07:01.420 に答える