findViewById()在一个活动中起作用,但在另一个活动中起作用

Yaq*_*mad 2 android nullreferenceexception android-edittext android-view findviewbyid

我试图将EditText从Activity1传递给Activity2.

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); 
}
Run Code Online (Sandbox Code Playgroud)

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**
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是该行:EditText myEditText =(EditText)findViewById(myEditTextId); 在Activity1中工作正常, 但它在Activity2中不起作用.

编辑:

注意:两个活动都使用不同的布局感谢您宝贵的时间和帮助.

Nic*_*ckT 6

您可以访问的唯一视图是您在活动2开始时加载的布局中的视图,即R.layout.comments_detail中的视图.我猜测Activity 1加载了一个不同的布局及其setContentView(..),并且它位于'myEditText定义和范围内的布局中.