2

我正在尝试将 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 中不起作用。

编辑:

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

4

5 回答 5

6

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

于 2011-10-25T15:45:15.517 回答
0

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

于 2011-10-25T15:39:09.267 回答
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)

于 2011-10-25T15:39:51.403 回答
0

这是做不到的。

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

于 2011-10-25T15:41:32.277 回答
0

I think it can work if you use the same layout R.layout.comments_detail in Activity1 and Activity2 because findViewById() return the unique id and this id only belong layout comments_detail

于 2011-10-25T15:45:52.903 回答