2

我想從Activity1傳遞EditText到Activity2。findViewById()工作在一個活動,但不在其他

活性1代碼:

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); 
} 

活性2代碼:

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中不起作用。

編輯:

注:這兩個活動都使用不同的佈局 感謝您的寶貴時間&幫助。

+0

如果兩個活動使用相同的佈局的setContentView ()那麼它應該是工作。謝謝 – user370305

回答

6

你訪問你的唯一觀點是那些在佈局你活動2,即那些在R.layout.comments_detail開始加載。我猜測活動1使用它的setContentView(..)加載了一個不同的佈局,並且它在'myEditText被定義並且在範圍內的佈局中。

+0

謝謝@NickT 你是對的,兩個活動都在使用不同的佈局。 –

0

您無法將視圖作爲額外值傳遞。你可以在視圖中傳遞字符串(如果這是你的目的)。

0

好像你正在試圖獲得EditText ID之前它被分配:

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

試試這個:

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

編輯

是否在EditText問題甚至存在於佈局佈局中? (R.layout.comments_detail)

+0

第二個想法是,如果你在第二個活動中獲得正確的ID,那應該不成問題。你在第一個Activity中的代碼有點誤導,但是:) –

+0

Thanks @michell返回 我已經更新了這個問題,希望它現在清晰。 –

0

這是無法完成的。

如果您嘗試從活動2,那麼你應該返回從活動二事活動1通過傳遞您在活動1中所做的觀點ID到活動2操縱活動1不應該下定決心,任何因活動2中沒有創建任何內容。findViewById在當前活動上被調用。由於您沒有在視圖中設置任何內容,因此找不到任何內容。

0

我認爲它可以工作,如果你在活動1和活性2使用相同的佈局R.layout.comments_detail因爲findViewById()返回唯一的ID和該ID只屬於佈局comments_detail

相關問題