2

私は Android プロジェクトの開発を始めたばかりで、道路の衝突に遭遇しました。私は開発者サイト (http://developer.android.com/training/basics/firstapp/index.html) から始めていますが、問題は新しいアクティビティ (http://developer.android.com/training/) を開始することから始まります。 basics/firstapp/starting-activity.html)

このサイトは Eclipse を想定しており、Eclipse の舞台裏で起こっていることを見逃しているのではないかと思いますが、私は IntelliJ IDEA を使用しています。

DisplayMessageActivity.java で、次のエラーが発生します。

cannot find symbol variable activity_display_message.

Eclipse の例では、これはレイアウト名です。

修正の試みではなく、最初に問題に遭遇したときのコードを含めています。

DisplayMessageActivity:

public class DisplayMessageActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display_message);
    }
}

Androidマニフェスト:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="13"/>
    <application android:label="@string/app_name" android:icon="@drawable/icon">
        <activity android:name="MyActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:name=".DisplayMessageActivity"
                  android:label="My Message">
                <meta-data android:name="android.support.PARENT_ACTIVITY"
                        android:value="com.example.MainActivity"/>
        </activity>
    </application>
</manifest>

R.java:

package com.example;

public final class R {
    public static final class attr {
    }
    public static final class color {
        public static final int testing_string_color=0x7f040000;
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    public static final class id {
        public static final int edit_message=0x7f060000;
    }
    public static final class layout {
        public static final int main=0x7f030000;
    }
    public static final class string {
        public static final int app_name=0x7f050000;
        public static final int button_send=0x7f050002;
        public static final int edit_message=0x7f050001;
        public static final int menu_settings=0x7f050003;
        public static final int title_activity_main=0x7f050004;
    }
}

main.xml:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
        >
    <EditText android:id="@+id/edit_message"
              android:layout_width="0dp"
              android:layout_height="wrap_content"
              android:layout_weight="1"
              android:hint="@string/edit_message"/>
    <Button android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="@string/button_send"
            android:onClick="sendMessage"/>

</LinearLayout>
4

3 に答える 3

4

という XML ファイルがないためですactivity_display_message

を呼び出すとsetContentView(R.layout.main)、 というタイトルの XML レイアウト ドキュメントが参照されますmain.xml。を使用している場合R.layout.activity_display_messageは、対応する と呼ばれるレイアウトが必要ですactivity_display_messagemain.xml代わりにそのレイアウトを使用する場合は、代わりに呼び出しを変更する必要がありますsetContentView(R.layout.main)

于 2012-10-24T21:47:48.103 に答える
2

setContentView(R.layout.activity_display_message);と置き換えますsetContentView(R.layout.main);

レイアウト ファイルの名前を持つレイアウトのみを参照できます。

于 2012-10-24T21:48:14.027 に答える
0

そのチュートリアルに従い、 Eclipse を使用しない場合、コードは実際には次のようになります。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Get the message from the intent
    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    // Create the text view
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);

    // Set the text view as the activity layout
    setContentView(textView);
}

のバージョンsetContentView(R.layout.activity_display_message);は、一部の Eclipse ボイラープレート コードの一部です。Eclipse 経由でアクティビティを追加した場合は、その行に加えて、その行を機能させるその他のサポート コードが追加されます。

于 2014-10-27T05:06:38.387 に答える