Android-панель нижнего меню

1

Я хочу иметь общую нижнюю панель меню через приложения с каждой страницы. Я разработал нижний план, но меня смущает событие onClick значков меню. должен ли я писать код для прослушивателя onClick с каждым классом деятельности, чтобы сделать видимым и работающим на каждой странице бар, или если есть какой-либо другой способ, я могу создать общую нижнюю панель, которая лежит на каждой странице, без написания кода меню в каждом класс активности.

Я попытался создать через создание базового класса и расширить его в других дочерних классах, как указано dave.c в сообщении Android, создающем меню нижнего бара, но это не помогло мне. Пожалуйста, предложите. Спасибо.

Теги:
onclick
listener
android-widget
android-menu

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 - еще один пример), это будет невозможно.

Другой способ заключается в подклассе Activity и определении одного общего обработчика, который обрабатывает события onClick. В этом случае вам нужно будет определить обработчики onClick в каждом действии и вызвать соответствующие методы обычного обработчика.

Еще один способ - использовать TabHost и TabActivity.

  • 0
    Эта кнопка не работает на следующей странице, на клике ничего не было выполнено, я пробовал с тостом и намерением.
  • 0
    я отредактировал ответ, я создал пример проекта и протестировал код, и он работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню