2017-02-23 11 views
1

このメソッドは、タグデータを受け取り、それを別のアクティビティに送信します。
このメソッドをデバッガでステップ実行すると、値が期待通りであることがわかります。タグからのデータが新しいアクティビティに正しく渡されない

public void ShowView(TextView tv, ImageView iv) { 
    Intent intent = new Intent(this, DisplaySeekAgain.class); 
    String text_tag = tv.getTag().toString(); 
    String image_tag = iv.getTag().toString(); 
    intent.putExtra(EXTRA_NAME, text_tag);  //example: "Joe Brown" 
    intent.putExtra(EXTRA_IMAGE, image_tag); //example: "profilePic1" 
    startActivity(intent); 

} 

期待値は罰金です:

  • text_tag: "ジョー・ブラウン"
  • IMAGE_TAG: "profilePic1"

はしかし、新しい活動で、text_tag値になりますimage_tag値

public class DisplaySeekAgain extends AppCompatActivity { 

private GoogleApiClient client; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Intent intent = getIntent(); 
    String message = intent.getStringExtra(MainActivity.EXTRA_NAME); //example: "profilePic1" 
    String image = intent.getStringExtra(MainActivity.EXTRA_IMAGE); //example: "profilePic1" 

期待値が間違っている:

  • メッセージ= "profilePic1" 私は "メッセージ" 文字列である理由はわからない= "profilePic1"

  • 画像正しく来ていない。
    私のコードで何かしていることがありますか?

  • +2

    実際に 'EXTRA_NAME'と' EXTRA_IMAGE'を表示した方が助けが簡単です。しかしそれらはまったく同じように見えます。 –

    +0

    あなたはこの2つの変数を持つべきです: 'public static final String EXTRA_NAME =" extra-name "と' public static final String EXTRA_IMAGE = "extra-image"。これらの2つの文字列の値を確認してください。値は異なる必要があります。 – jemsnaban

    答えて

    1

    putExtraでは、一度に1つだけStringを渡すことができます。複数のStringをあなたの次のアクティビティに渡すには、Bundleを使用する必要があります。たびに呼び出す:

    intent.putExtra(EXTRA_NAME, text_tag); intent.putExtra(EXTRA_IMAGE, image_tag);

    あなたはintent.putExtra(EXTRA_IMAGE, image_tag);intent.putExtra(EXTRA_NAME, text_tag);を上書きしています。

    以下のコードはこれを修正する必要があります。

    public void ShowView(TextView tv, ImageView iv) { 
    String text_tag = tv.getTag().toString(); 
    String image_tag = iv.getTag().toString(); 
    
    Intent intent = new Intent(this, DisplaySeekAgain.class); 
    Bundle extras = new Bundle(); 
    extras.putString(EXTRA_NAME, text_tag);  //example: "Joe Brown" 
    extras.putString(EXTRA_IMAGE, image_tag); //example: "profilePic1" 
    intent.putExtras(extras); 
    startActivity(intent); 
    
    } 
    
    
    public class DisplaySeekAgain extends AppCompatActivity { 
    
    private GoogleApiClient client; 
    
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Bundle extras = getIntent().getExtras(); 
    
    String message = extras.getString(MainActivity.EXTRA_NAME); //example: "profilePic1" 
    String image = extras.getString(MainActivity.EXTRA_IMAGE); //example: "profilePic1" 
    
    1

    期待値は罰金です:示すように

    • text_tag = "Joe Brown"
    • image_tag = "profilePic1"

    ...

    intent.putExtra(EXTRA_NAME, text_tag);  //example: "Joe Brown" 
    intent.putExtra(EXTRA_IMAGE, image_tag); //example: "profilePic1" 
    

    しかし、その後

    String message = intent.getStringExtra(MainActivity.EXTRA_NAME); //example: "profilePic1" 
    

    EXTRA_NAME.equals(EXTRA_IMAGE)、そしてあなただけのため、事前に設定され、何を優先して、1つの余分値を入れています。

    関連する問題