Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android findViewById()在一个活动中工作,但在另一个活动中不工作_Android_Android Edittext_Nullreferenceexception_Android View_Findviewbyid - Fatal编程技术网

Android findViewById()在一个活动中工作,但在另一个活动中不工作

Android findViewById()在一个活动中工作,但在另一个活动中不工作,android,android-edittext,nullreferenceexception,android-view,findviewbyid,Android,Android Edittext,Nullreferenceexception,Android View,Findviewbyid,我正在尝试将EditText从Activity1传递到Activity2 活动1代码: public void openNextActivity() { Intent intent = new Intent("com.abc.xyz.ImageActivity"); EditText myEditText = (EditText)findViewById(R.id.myEditText); int myEditTextId = myEditText.getId();

我正在尝试将EditText从Activity1传递到Activity2

活动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中不工作

编辑:

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

您不能将视图作为额外内容传递。您可以在视图中传递字符串(如果这是您的目的)。

似乎您正在尝试在分配前获取
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
是否存在于集合布局中?(右布局。注释\u详细信息)

这无法完成


如果您试图从活动2中操作活动1,那么您应该从活动2中向活动1返回一些内容。通过将您在活动1中创建的视图ID传递给活动2,由于活动2中未创建任何内容,因此活动2不应解析为任何内容。对当前活动调用findViewById。由于您没有在视图中设置任何内容,因此它找不到任何内容。

您可以访问的唯一视图是活动2开始时加载的布局中的视图,即R.layout.comments\u detail中的视图。我猜Activity 1使用其setContentView(..)加载了一个不同的布局,并且它在该布局中定义了myEditText,并且在范围内。

我认为如果您在Activity 1和Activity 2中使用相同的布局R.layout.comments\u详细信息,它可以工作,因为findViewById()返回唯一id,此id只属于布局注释\u detail

,如果您在第二个活动中获得了正确的id,这应该不会有问题。您在第一个活动中的代码有点误导,不过:)谢谢@michell Back我已经更新了问题,希望现在问题已经清楚了。如果两个活动都使用与setContentView()相同的布局,那么它应该可以工作。ThanksThanks@NickT你说得对,两个活动都使用不同的布局。