0

この件について別のトピックを作成して申し訳ありませんが、既にそれらのいくつかを読みましたが、なぜこのエラーが発生するのかまだわかりません. http://developer.android.com/training/basics/firstapp/index.htmlの「Building Your First App」チュートリアルに従い、DisplayMessageActivity クラスにレイアウトを与えるようにアプリケーションを変更しようとしました。「activity_displaymessage.xml」というファイルを作成し、クラスに実装しました。

私はアンドロイドが初めてで、これがどのように機能するかを理解しようとしています。私は何を間違っていますか?

これが私のコードです:

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

あなたは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 に答える