Общий код для включаемого макета - (Пример ActionBar) - PullRequest
0 голосов
/ 30 марта 2012

Я запутался в макете включения:

  1. допустим, я создал макет для панели действий с именем actionbar.xml
  2. Я включил это во все мои другие макеты

Теперь, как и где мне написать Java-код для панели действий? Если я напишу onclick -функцию, скажем main.java?

Как я смогу использовать то же самое, скажем, второе действие, сохраненное в second.java? Есть ли другой метод, кроме создания объекта класса, в котором определен onclick для панели действий?

Ответы [ 3 ]

2 голосов
/ 30 марта 2012

Если у вас был action_bar.xml макет, подобный этому:

<?xml version="1.0" encoding="utf-8"?>
<com.your.package.ui.widget.ActionBar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/actionBar"
    android:layout_width="fill_parent"
    android:layout_height="58dip"
    android:background="@drawable/action_bar_background" >

<ImageButton
        android:id="@+id/actionBarOpenButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/transparent"
        android:contentDescription="open button"
        android:src="@drawable/action_bar_open_button" />

</com.your.package.ui.widget.ActionBar>

Тогда у вас будет класс в пакете com.your.package.ui.widget

Называется ActionBar.java, который выглядел так:

package com.your.package.ui.widget;

public class ActionBar extends LinearLayout implements OnClickListener {

    public ActionBar(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ActionBar(Context context) {
        super(context);
    }

      @Override
      protected void onFinishInflate() {
          super.onFinishInflate();

          findViewById(R.id.actionBarOpenButton).setOnClickListener(this);
      }

    @Override
        public void onClick(View v) {                
            switch (v.getId()) {
            case R.id.actionBarOpenButton:
                     // Do something
                  break;
                default:
                 break;
            }
        }
}

Затем вы бы включили его в другой макет, скажем, "activity_main.xml", например так:

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

    <include layout="@layout/action_bar" />

    <!-- Rest of your layout -->

</LinearLayout>

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

0 голосов
/ 30 марта 2012

Есть способ достичь этого. Вы должны реализовать функцию межфазного обратного вызова для вашей панели действий.

0 голосов
/ 30 марта 2012

Если вы хотите сделать что-то видимым во всей своей деятельности, то вы можете сделать это следующим образом: создать заголовочный XML и заголовочный файл ACTIVITY.

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

В качестве примера вы можете увидеть как создать панель кнопок верхнего или нижнего колонтитула для моего приложения для Android .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...