-1

SDKでApiDemosサンプルを調べて、メニューの例(App / Menu / Inflate from Menu-MenuInflateFromXml.java)を分離しようとしています。

package my.android.Menu;


import my.android.Menu.R;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class MyMenu extends Activity {

    /**
     * Different example menu resources.
     */
    private static final int sMenuExampleResources[] = {
        R.menu.title_only, R.menu.title_icon, R.menu.submenu, R.menu.groups,
        R.menu.checkable, R.menu.shortcuts, R.menu.order, R.menu.category_order,
        R.menu.visible, R.menu.disabled
    };

    /**
     * Names corresponding to the different example menu resources.
     */
    private static final String sMenuExampleNames[] = {
        "Title only", "Title and Icon", "Submenu", "Groups",
        "Checkable", "Shortcuts", "Order", "Category and Order",
        "Visible", "Disabled"
    };

    /**
     * Lets the user choose a menu resource.
     */
    private Spinner mSpinner;

    /**
     * Shown as instructions.
     */
    private TextView mInstructionsText;

    /**
     * Safe to hold on to this.
     */
    private Menu mMenu;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

     // Create a simple layout
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);   


     // Create the spinner to allow the user to choose a menu XML
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, sMenuExampleNames); 
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        mSpinner = new Spinner(this);

        // When programmatically creating views, make sure to set an ID
        // so it will automatically save its instance state


        mSpinner.setId(R.id.spinner);//Error Line
        mSpinner.setAdapter(adapter);


        setContentView(R.layout.main);
    }
}

IDEは、「スピナーを解決できないか、フィールドではありません」というエラーを表示します。「spinner」を含むXMLファイルが見つかりませんでした。

4

2 に答える 2

0

setContentView(R.layout.main);ビューを使用する前にアクティビティのコンテンツを設定する必要があり、プログラムでスピナーsuper.onCreate(savedInstanceState);ビューをインスタンス化する必要はありません。main.xmlファイルで定義されているスピナーを使用するだけです(このファイル内にスピナーがあると仮定します)。

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

     // Create a simple layout
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);   


     // Create the spinner to allow the user to choose a menu XML
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, sMenuExampleNames); 
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //mSpinner = new Spinner(this);

        // When programmatically creating views, make sure to set an ID
        // so it will automatically save its instance state


        // mSpinner.setId(R.id.spinner);//Error Line
        mSpinner = (Spinner) findViewById(R.id.you_spinner_id); //you_spinner_id must be defined at main.xml
        mSpinner.setAdapter(adapter);
    }
于 2012-07-11T22:11:15.633 に答える
0

上記のティムのコメントによると:

この行をあなたの中に入れてくださいonCreate()

mSpinner = (Spinner) findViewById(R.id.spinner);
于 2012-07-11T21:43:34.977 に答える