私はアンドロイドが初めてです。最近、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 ドキュメントとインターネットを検索します。解決策が見つかりません。私のコードと解決策に何が起こったのかを知っている人がいることを願っています
ありがとう !!
トム