1

すべてのページでアプリケーション全体に共通の下部メニュー バーが必要です。ボトムバーをデザインしましたが、メニューアイコンの onClick イベントと混同しています。バーを表示してすべてのページで機能させるために、すべてのアクティビティ クラスで onClick リスナーのコードを記述する必要があるかどうか、またはすべてのページにメニューのコードを記述せずにすべてのページにある共通の下部バーを作成できる他の方法があるかどうかアクティビティクラス。

AndroidがBottom Bar Menuを作成する投稿でdave.cが述べているように、基本クラスを作成して他の子クラスに拡張することで作成しようとしましたが、うまくいきませんでした。提案してください。ありがとう。

4

1 に答える 1

2

簡単な例 (dave.c が示唆するように):

public class BaseActivity extends Activity {

    public void onClickButton1(View view) {
            Toast toast = Toast.makeText(this, "Button 1 clicked", Toast.LENGTH_SHORT);
            toast.show();
    }

    public void onClickButton2(View view) {
            Intent i = new Intent(this, MyFirstActivity.class);
            startActivity(i);
    }

    public void onClickButton3(View view) {
            Intent i = new Intent(this, MySecondActivity.class);
            startActivity(i);
    }
}

MyFirstActivity は次のようになります。

public class MyFirstActivity extends BaseActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_first_activity);
    }
}

MySecondActivity アクティビティ:

public class MySecondActivity extends BaseActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_second_activity);
    }
}

my_first_activity.xml レイアウトに以下を含めます。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">    
    <TextView android:text="My first activity" android:layout_width="wrap_content"
         android:layout_height="wrap_content"/>
    <include android:layout_width="fill_parent" android:layout_height="wrap_content" 
         layout="@layout/bottom_bar" />
</LinearLayout>

my_second_activity.xml で:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:text="My second activity" android:layout_width="wrap_content" 
        android:layout_height="wrap_content"/>
    <include android:layout_width="fill_parent" android:layout_height="wrap_content" 
        layout="@layout/bottom_bar" />
</LinearLayout>

bottom_bar では、onClick ハンドラーでボタンを定義します。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <Button android:text="Button1" android:id="@+id/button1" android:layout_width="wrap_content" 
        android:layout_height="wrap_content" android:onClick="onClickButton1"/>
    <Button android:text="Button2" android:id="@+id/button2" android:layout_width="wrap_content" 
        android:layout_height="wrap_content" android:onClick="onClickButton2"/>
    <Button android:text="Button3" android:id="@+id/button3" android:layout_width="wrap_content" 
        android:layout_height="wrap_content" android:onClick="onClickButton3"/>
</LinearLayout>

この設計を使用すると、問題が発生する可能性があります。たとえば、一部のアクティビティで ListView を使用し、ListActivity をサブクラス化したい場合 (TabActivity は別の例です)、それは不可能です。

もう 1 つの方法は、Activity をサブクラス化し、onClick イベントを処理する 1 つの共通ハンドラーを定義することです。この場合、各アクティビティで onClick ハンドラーを定義し、対応する共通ハンドラーのメソッドを呼び出す必要があります。

もう 1 つの方法は、TabHost と TabActivity を使用することです。

于 2011-05-19T07:30:54.150 に答える