0

私はアンドロイドが初めてです。最近、Tabwidget の作成方法を学びました。この機能は便利です。しかし、必要なウィジェットを R.layout.xxxx に追加できないことがわかりました。だから私はJavaコードでそれをやろうとします。しかし、残念ながらそれは失敗しました。

XML を使用して、次のことを行います。プログラムは問題なく動作します。

public class ShowBalanceActivity extends Activity implements AdapterView.OnItemSelectedListener
{
  private Spinner monthview;
  private ArrayAdapter monthadapter;

public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.balance);

        monthadapter = ArrayAdapter.createFromResource(
                this, R.array.months, android.R.layout.simple_spinner_item);
        monthadapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
        monthview = (Spinner) findViewById(R.id.monthlist);

 monthview.setOnItemSelectedListener(this);
 monthview.setAdapter(monthadapter);

    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
    {

    }

}

Java コード部分については、以下を使用します。

public class BalanceLayout extends TabActivity implements TabHost.TabContentFactory
{

    private Activity activity;
    private LayoutInflater inflaterHelper = null;  
    private Spinner monthview = null;
    private LinearLayout layout;
    private static final String Tab1 = "By Date";
    private static final String Tab2 = "By Categories";
    private ArrayAdapter <String> monthadapter = null;

    public BalanceLayout (Activity a) 
    {  
           activity = a;  
           inflaterHelper = a.getLayoutInflater();  
    }

public View addCustomView(String id)
    {  

        layout = new LinearLayout(activity);  
        layout.setOrientation(LinearLayout.VERTICAL);  

        if(id.equals(Tab1))
        {  

            Spinner monthview = new Spinner(activity);
         ArrayAdapter <String> monthadapter = new ArrayAdapter <String> (this,
                   android.R.layout.simple_dropdown_item_1line, MONTHS);
            monthadapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
            monthview.setAdapter(monthadapter);

            monthview.setOnItemSelectedListener(
                    new AdapterView.OnItemSelectedListener() 
                    {
                        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
                        {

                        }

                        public void onNothingSelected(AdapterView<?> parentView) 
                     {

                     }


                    });
            layout.addView(monthview,  
                    new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));  

        }  

        else if(id.equals(Tab2))
        {  

        }  

        return layout;  
    } 

}

しかし、プログラムを実行すると強制終了します。XMLのようなビューを作成するためにfindViewByIdメソッドを使用できないようです。

私は多くのドキュメントを読み、Android ドキュメントとインターネットを検索します。解決策が見つかりません。私のコードと解決策に何が起こったのかを知っている人がいることを願っています

ありがとう !!

トム

4

1 に答える 1

0

コードをチェックしてデバッグした後。最後に、簡単に解決できます。しかし、もともと理由はわかりません。次に、テキストビューを挿入するだけで問題を切り分けます。

TextView tv = 新しい TextView(アクティビティ); tv.setText("これはテキスト ビューです");

layout.addView(tv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));

私のコードの問題は、「アクティビティ」ではなく「これ」を使用していることです。コンテンツファクトリーやインテントメソッドを使わずに動的にレイアウトを作成したいからです。したがって、「これ」は活動に置き換えられました。その後、問題は解決しました。しかし、トラブルシューティングに多くの時間を費やしました。アンドロイドはすごい

monthadapter = ArrayAdapter.createFromResource( activity, R.array.months, android.R.layout.simple_spinner_item); monthadapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);

于 2010-10-02T11:44:49.610 に答える