0

很抱歉在这个主题上提出另一个话题,但我已经阅读了其中的几个,但仍然不知道为什么我会收到这个错误。我按照http://developer.android.com/training/basics/firstapp/index.html上的“构建您的第一个应用程序”教程进行操作,然后尝试修改我的应用程序以为 DisplayMessageActivity 类提供布局。我创建了一个名为“activity_displaymessage.xml”的文件并将其实现到类中。

我是 android 新手,我试图了解这一切是如何工作的。我究竟做错了什么?

这是我的代码:

MainActivity.java

public class MainActivity extends Activity {

    public final static String EXTRA_MESSAGE = "com.example.sampleandroid.MESSAGE";

        .
        .
        .


    public void sendMessage(View view){
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText editText =  (EditText) findViewById(R.id.edit_message);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }
}

DisplayMessageActivity.java

public class DisplayMessageActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_displaymessage);

        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

        TextView textview = (TextView) findViewById(R.id.text_view);
        textview.setText(message);

        setContentView(textview);
    }
}

activity_displaymessage.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:weightSum="2">

    <TextView android:id="@+id/text_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textSize="30sp"/>

</LinearLayout>
4

2 回答 2

2

您有两个。您的setContentView布局文件activity_displaymessage已经有子视图R.id.text_view,那么为什么将其设置为 setContentView()。

setContentView(R.layout.activity_displaymessage);setContentView(textview);

删除此行setContentView(textview);

于 2012-07-13T11:30:09.263 回答
1

当您执行 setContentView() 时,传递给它的视图会附加到父级。在您的情况下,当您致电时, text_view 的父母已经设置好了

setContentView(R.layout.activity_displaymessage)

在您尝试 setContentView(textview) 的最后一行中,基本上发生的情况是,您使用 (TextView) findViewById(R.id.text_view) 获得的同一对象在它已经有父对象时被分配了父对象。这是不允许的,因此是错误的。

你不需要最后一行。

于 2012-07-13T11:42:36.957 回答