1

最近、Android のコーディングに興味を持ち、いくつかのチュートリアルに取り組んでいます。しかし、今は一日立ち往生しているので、皆さんが私を助けてくれることを願っています.

基本的に、すべてのメインメニューエントリに対してメインメニューとサブメニューを作成したいと考えています。(現時点では、これは最初のエントリの場合のみです)

メイン メニューには、さまざまなアイコンを持つ ListView を使用しました (カスタム アダプターで実現)。メニュー エントリの 1 つを選択すると、通常は正常に動作しますが、onitemclick を構成して、ArrayAdapter を使用する別の (単純な) ListView である新しいアクティビティを開始すると、サブメニュー アクティビティに切り替えた後に中断します。

奇妙なことに、両方の ListView で ArrayAdapter を使用しても問題ありません。両方で CustomAdapter を使用する場合も同様です。

これがコードです。事前に助けてくれてありがとう;)

メインメニュー:

public class MainActivity extends ListActivity {

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

    // storing string resources into Array contentmenu
    String[] contentmenu = getResources().getStringArray(R.array.mainmenu_cats);
    // storing icons in Array
    TypedArray iconarray = getResources().obtainTypedArray(R.array.mainmenu_icons);

    // Binding resources Array to ListAdapter
    this.setListAdapter(new ImageAndTextAdapter(this, R.layout.list_item, contentmenu, iconarray));

    ListView lv = getListView();

    // listening to single list item on click
    lv.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {


          // Launching new Activity on selecting single List Item
          switch( position )
            {
               case 0:  Intent newActivity0 = new Intent(getApplicationContext(),SubActivity.class);     
                        startActivity(newActivity0);
                        break;

               case 1:  Intent newActivity1 = new Intent(getApplicationContext(),SubActivity2.class);     
                        startActivity(newActivity1);                            
                        break;

            }

      }
    });


}

サブメニュー:

public class SubActivity extends ListActivity{

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


    // storing string resources into Array
    String[] submen_1 = getResources().getStringArray(R.array.submenu_1);

    // Binding resources Array to ListAdapter
    setListAdapter(new ArrayAdapter<String>(ctx, R.layout.list_item1, R.id.submen1, submen_1));

    ListView sublv1 = getListView();

    // listening to single list item on click
    sublv1.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {

          // Launching new Activity on selecting single List Item
          Intent newActivity = new Intent(getApplicationContext(),Page1.class);     
          // sending data to new activity
          newActivity.putExtra("position",position);
          startActivity(newActivity);

          }
    });
    }

xml メイン メニュー: list_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:id="@+id/option_icon"
android:layout_width="48dp"
android:layout_height="fill_parent"/>
<TextView
   android:id="@+id/option_text"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16dp" >
</TextView>

サブメニュー: list_item1.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:id="@+id/icon1"
android:layout_width="48dp"
android:layout_height="fill_parent"
android:src="@drawable/ic_action_google_play" />
<TextView
   android:id="@+id/submen1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16dp" >
</TextView>

4

1 に答える 1

0

LinearLayout現在、 と layoutの両方list_item.xmlでHight と Width を定義していませんlist_item1.xml。高さと幅を次のように追加します。

list_item.xml で:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

   <!-- PUT YOUR ImageView or other xml elements here -->

</LinearLayout>

list_item1.xmlレイアウトについても同じことを行います

于 2013-03-07T17:38:48.417 に答える