2017-04-05 14 views
-1

ハッシュマップによって作成されたIntentExtraを使って、別のアクティビティから値のベースを調整しようとしています。状況;(Android)ハッシュマップで作成されたIntentExtraの値を確認してください


A Javaクラス

HashMapの

意向送信

エキストラテントで値を入れて文字列

に値を挿入し


B Javaクラス

はテントエクストラ

を取得するには、どの値handedoverを知っている "場合は、" 使用して文字列

チェックイン時にエキストラを入れました。


問題は最後です。

Bのコードは以下のようになります。

Intent intent = getIntent(); 
    String mapKey; 
    mapKey = intent.getStringExtra(MAPMARKER); 
    Toast.makeText(getApplicationContext(),mapKey,Toast.LENGTH_SHORT).show(); 

    if(mapKey == "Donhawmun") { 
     Toast.makeText(getApplicationContext(),"SUCCESS",Toast.LENGTH_SHORT).show(); 
     pager = (ViewPager) findViewById(R.id.image_pager); 
     readingpart = (TextView) findViewById(R.id.readingPart); 
     DonImageClass adapter = new DonImageClass(getLayoutInflater()); 
     pager.setAdapter(adapter); 
     readingpart.setText(R.string.Don); 
    }else if(mapKey == "Geumcheongyo"){ 
     Toast.makeText(getApplicationContext(),"SUCCESS",Toast.LENGTH_SHORT).show(); 
     pager = (ViewPager) findViewById(R.id.image_pager); 
     readingpart = (TextView) findViewById(R.id.readingPart); 
     GeumImageClass adapter = new GeumImageClass(getLayoutInflater()); 
     pager.setAdapter(adapter); 
     readingpart.setText(R.string.Geum); 
    } 

最初に「トースト」が良いので、「Donhawmun」というメッセージを焼きます。

ただし、 "Donhawmun"というテキストと一致しません。

私はそれが問題を直接テキストと一致するかどうか、私は別の文字列 "Donhawmun"を作成し、それを比較する "if"文に入れているのだろうか。しかし、それは動作しませんでした。私はそれがすでに "Donhawmun"としてmapKey値を表示しているのかどうかはわかりませんが、if文で "Donhawmun"と一致しなかったのはなぜですか?アイデアを持っている人を助けてください。前もって感謝します。

+0

を試してみてください。それはequals()またはequalsIgnoreCase()メソッドによって行われます。コードは次のようになります(mapKey.equals( "Donhawmun")) –

答えて

0

文字列を比較するには、equalメソッドを使用する必要があります。したがって、次のコードを使用してください。

if(mapKey.equals("Donhawmun")) { 
    ... 
}else if(mapKey.equals("Geumcheongyo")){ 
    ... 
} 
0

それは、テキスト "Donhawmun" と一致していません。あなたがここequals()代わりの==

を使用することを検討すべきである

が理由です!

==は参照比較であり、すなわち両方のオブジェクトが同じメモリ位置を指している。
.equals()は、オブジェクト内の値の比較を評価します。

0

はコード

if(mapKey.equalsIgnoreCase("Donhawmun")) { 
    Toast.makeText(getApplicationContext(),"SUCCESS",Toast.LENGTH_SHORT).show(); 
    pager = (ViewPager) findViewById(R.id.image_pager); 
    readingpart = (TextView) findViewById(R.id.readingPart); 
    DonImageClass adapter = new DonImageClass(getLayoutInflater()); 
    pager.setAdapter(adapter); 
    readingpart.setText(R.string.Don); 
}else if(mapKey.equalsIgnoreCase("Geumcheongyo")){ 
    Toast.makeText(getApplicationContext(),"SUCCESS",Toast.LENGTH_SHORT).show(); 
    pager = (ViewPager) findViewById(R.id.image_pager); 
    readingpart = (TextView) findViewById(R.id.readingPart); 
    GeumImageClass adapter = new GeumImageClass(getLayoutInflater()); 
    pager.setAdapter(adapter); 
    readingpart.setText(R.string.Geum); 
} 

あなたが使用して文字列を比較することはできません "==" の下にしてみてください。

0

使用は(等しい)またはあなたのBクラスでequalsIgnoreCase()メソッド

if(mapkey.equalsIgnorCase("Donhawmun")) 
{ 
...... 
} 
else if(mapkey.equalsIgnorCase("Geumcheongyo")) 
{ 
.... 
} 
0

2つの文字列を比較する(==)演算子を使用しないでください。この

Intent intent = getIntent(); 
     String mapKey = intent.getStringExtra(MAPMARKER); 

     if(getIntent().getExtras() != null && mapKey.equals("Donhawmun")) { 
      Toast.makeText(getApplicationContext(),"SUCCESS",Toast.LENGTH_SHORT).show(); 
      pager = (ViewPager) findViewById(R.id.image_pager); 
      readingpart = (TextView) findViewById(R.id.readingPart); 
      DonImageClass adapter = new DonImageClass(getLayoutInflater()); 
      pager.setAdapter(adapter); 
      readingpart.setText(R.string.Don); 
     }else if(getIntent().getExtras() != null && mapKey.equals("Geumcheongyo")){ 
      Toast.makeText(getApplicationContext(),"SUCCESS",Toast.LENGTH_SHORT).show(); 
      pager = (ViewPager) findViewById(R.id.image_pager); 
      readingpart = (TextView) findViewById(R.id.readingPart); 
      GeumImageClass adapter = new GeumImageClass(getLayoutInflater()); 
      pager.setAdapter(adapter); 
      readingpart.setText(R.string.Geum); 
     } 
関連する問題