我正在尝试将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);
}
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中无法正常工作。
修改
注意:这两项活动都使用不同的布局 感谢您宝贵的时间和帮助
答案 0 :(得分:6)
您可以访问的唯一视图是您在活动2开始时加载的布局中的视图,即 R.layout.comments_detail 中的视图。我猜测Activity 1使用setContentView(..)加载一个不同的布局,并且在那个'myEditText被定义并且在范围内的布局中。
答案 1 :(得分:0)
您无法将视图作为额外内容传递。您可以在视图中传递字符串(如果这是您的目的)。
答案 2 :(得分: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)
答案 3 :(得分:0)
这不可能。
如果您尝试操作活动2中的活动1,那么您应该从活动2返回活动1的内容。通过将您在活动1中创建的视图的ID传递给活动2,不应解决任何问题在活动2中创建。在当前活动上调用findViewById。由于您未在视图中设置任何内容,因此无法找到它。
答案 4 :(得分:0)
我认为如果你在Activity1和Activity2中使用相同的布局R.layout.comments_detail,它可以工作,因为findViewById()返回唯一的id,这个id只属于layout_detail