Как реализовать главную и дочернюю страницы, такие как Activity в Android? - PullRequest
6 голосов
/ 28 января 2010

Я хочу разместить общий баннер и меню на каждом занятии с нижним колонтитулом.

Кто-нибудь может подсказать мне, как я могу реализовать главную и дочернюю страницы, такие как asp.net в Android ???

Любая помощь будет оценена.

Ответы [ 4 ]

8 голосов
/ 28 января 2010

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

Другим способом было бы иметь класс Util, где у вас есть метод, подобный setupMenu(Menu), который может вызывать каждая из ваших операций, если вы выполняете более сложную настройку меню.

Что касается макета пользовательского интерфейса XML для каждой из ваших операций, вы можете включить общий баннер, используя тег <include/>.

1 голос
/ 22 мая 2013

Решение было довольно простым.

Вам необходимо расширить класс " Activity " в функции OnCreate SetContentView для вашего базового XML-макета, а также переопределить setContentView в базовом классе Activity

Например:

1.Создайте «base_layout.xml» с кодом ниже

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="vertical"
      android:background="#000000"
      android:padding="15dp" >
    <LinearLayout android:orientation="horizontal" android:background="#000000"
           android:layout_width="fill_parent" android:layout_height="wrap_content"
           android:minHeight="50dp" android:paddingLeft="10dp">
           <ImageView android:layout_width="wrap_content" android:id="@+id/ImageView01"
               android:adjustViewBounds="true" android:layout_height="wrap_content"
               android:scaleType="fitCenter" android:maxHeight="50dp" />
   </LinearLayout>
   <LinearLayout android:id="@+id/linBase"
     android:layout_width="fill_parent"
       android:layout_height="fill_parent" >
   </LinearLayout>
</LinearLayout>    

2.Создать "BaseActivity.java"

public class BaseActivity extends Activity {
    ImageView image;
    LinearLayout linBase;     
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        super.setContentView(R.layout.base_layout);        
        linBase = (LinearLayout)findViewById(R.id.linBase);
    }
    @Override
    public void setContentView(int id) {
        LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        inflater.inflate(id, linBase);
    }
}

и

public class SomeActivity extends BaseActivity {    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.some_layout);
       //rest of code
    }
}

Единственное, что я заметил до сих пор, это то, что при запросе индикатора выполнения (requestWindowFeature (Window.FEATURE_INDETERMINATE_PROGRESS)) это необходимо сделать перед вызовом super.onCreate. Я думаю, это потому, что до вызова этой функции еще ничего нельзя нарисовать.

Это прекрасно сработало для меня, и, надеюсь, вы найдете это полезным в вашем собственном кодировании.

0 голосов
/ 05 сентября 2016

ViewStub является решением

activity_masterpage.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >    
<ViewStub android:id="@+id/stub_content"
               android:inflatedId="@+id/subTree"
               android:layout_width="match_parent"
               android:layout_height="match_parent" />

stub = (ViewStub) findViewById(R.id.stub_content);
stub.setLayoutResource(R.layout.content_layout);
stub.inflate(); 
0 голосов
/ 05 марта 2010

У меня была такая же проблема, и я решил ее, используя ActivityGroup . Я полагаю, что пункты меню будут перемещать пользователя в другое действие, поэтому при использовании одного и того же меню в каждом действии закрытие приложения с помощью кнопки BACK может быть практически невозможным (через некоторое время пользователю придется вернуться назад ко всем действиям, которые он когда-либо видел).

Я не нашел ни одного хорошего учебника на английском языке, поэтому написал мое некоторое время назад (оно несколько короткое и только на польском, но версия Google Tranlslated должна быть понятной) отметьте this

Вы также можете проверить, как работает TabHost

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