2

Activity1からActivity2にEditTextを渡そうとしています。findViewById()はあるアクティビティでは動作しますが、他のアクティビティでは機能しません

Activity1コード:

public void openNextActivity() 
{ 
    Intent intent = new Intent("com.abc.xyz.ImageActivity"); 
    EditText myEditText = (EditText)findViewById(R.id.myEditText); 

    int myEditTextId = myEditText.getId(); 
    //For Test purpose ----- starts 
    // **Point1: next line of code works fine in this Activity1** 
    EditText myEditTextTest = (EditText)findViewById(myEditTextId); 
    //For Test purpose ----- ends 

    intent.putExtra("myEditText", myEditTextId); 

    startActivity(intent); 
} 

Activity2コード:

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.comments_detail); 

    Bundle extras = getIntent().getExtras(); 
    if(extras != null) 
    { 
     int myEditTextId = extras.getInt("myEditText"); 

     // Point2: next line of code displays the correct Id 
     Log.d("tag","myEditTextId"+ myEditTextId); 

     // Point 3: Next line of code not works in this Activity2 
     EditText myEditText = (EditText)findViewById(myEditTextId); 

     if(myEditText != null) 
     { 
      Log.d("tag","Not null"); 
     } 
     else 
     { 
      Log.d("tag","null");// **Point4: this condition executes** 
     } 
    } 
} 

問題はラインということである。のEditText myEditText =(のEditText)findViewById(myEditTextId)。 Activity1で正常に動作しますが、Activity2で動作しません。

EDIT:

注:両方の活動異なるレイアウトをあなたの貴重な時間&助けを 感謝を使用しています。

+0

属し一意のIDと、このIDを返すので、あなたがActivity1とActivity2に同じレイアウトR.layout.comments_detailを使用している場合、それは働くことができると思います()それは仕事でなければなりません。ありがとう – user370305

答えて

6

あなたへのアクセスは、あなたがすなわちR.layout.comments_detailのもの、活動2の開始時にロードされたレイアウトのものであり、持っている唯一の景色。私は、Activity 1がそのsetContentView(..)を使って別のレイアウトをロードし、そのレイアウト内に 'myEditTextが定義され、スコープ内にあることを推測しています。

+0

ありがとう@NickT あなたが正しいです、両方のアクティビティが異なるレイアウトを使用しています。 –

0

ビューを追加として渡すことはできません。ビュー内で文字列を渡すことができます(目的の場合)。 EditText内を

EditText myEditText = (EditText)findViewById(myEditTextId); **// Point1: Works fine** 
int myEditTextId = myEditText.getId(); 

編集を

を行います。

int myEditTextId = myEditText.getId(); 
EditText myEditText = (EditText)findViewById(myEditTextId); **// Point1: Works fine** 

が代わりにこれを試してみてください:

0

割り当てられています前に、あなたがEditText IDを取得しようとしているように思えます質問は設定されたレイアウトにも存在しますか? (R.layout.comments_detail)

+0

2番目の考えで、2番目のアクティビティで正しいIDを取得していれば、それは問題ではありません。最初のアクティビティのコードはちょっと誤解されています:) –

+0

ありがとう@michell Back 私はうまくいけばその問題を今更新しました。 –

0

これはできません。

アクティビティ2からアクティビティ1を操作しようとすると、アクティビティ2からアクティビティ1に何かを戻す必要があります。アクティビティ1で行ったビューのIDをアクティビティ2に渡すと、アクティビティ2では何も作成されません。findViewByIdは現在のアクティビティで呼び出されます。ビューに何も設定していないので、それを見つけることは何もありません。

0

私は両方のアクティビティがsetContentViewと同じレイアウトを使用する場合はfindViewByIdは()のみレイアウトcomments_detail

関連する問題