Android findViewById()在一个活动中工作,但在另一个活动中不工作
我正在尝试将EditText从Activity1传递到Activity2 活动1代码: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();
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你说得对,两个活动都使用不同的布局。