Я создал макет с видом меню, который будет в других макетах, показывающих некоторые кнопки. Чтобы определить эти кнопки и их действия, я создаю независимый класс, чтобы определить их все, и таким образом я избегаю необходимости определять их все снова и снова во всех действиях.Вид меню для нескольких макетов
Чтобы сделать это, сначала я создал menu_view макет:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<!-- Button columns -->
<RelativeLayout
android:id="@+id/border_left"
android:layout_width="100dip"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_alignParentLeft="true"
android:background="#000000" >
<ImageView
android:id="@+id/radioButton"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_weight="1"
android:layout_marginTop="60dp"
android:layout_marginLeft="10dp"
android:onClick="launch_radio"
android:src="@drawable/radio_button" />
<ImageView
android:id="@+id/musicButton"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_weight="1"
android:layout_marginTop="200dp"
android:layout_marginLeft="10dp"
android:onClick="launch_media"
android:src="@drawable/music_button" />
</RelativeLayout>
</RelativeLayout>
Примечание: Здесь не все кнопки, я только положить 2, чтобы иметь представление.
После этого я создал класс MenuView, где я определяю все эти кнопки и что они делают:
public class MenuView extends RelativeLayout {
private final LayoutInflater inflater;
public MenuView(Context context, AttributeSet attrs) {
super(context, attrs);
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.menu_view, this, true);
((ImageView)this.findViewById(R.id.navButton)).setOnClickListener(launch_nav);
((ImageView)this.findViewById(R.id.phoneButton)).setOnClickListener(launch_phone);
((ImageView)this.findViewById(R.id.webButton)).setOnClickListener(launch_web);
((ImageView)this.findViewById(R.id.backButton)).setOnClickListener(goBack);
}
private final OnClickListener launch_nav = new OnClickListener() {
@Override
public void onClick(View v) {
getContext().startActivity(new Intent(getContext(), Navigation.class));
}
};
**¡¡¡THROUBLE!!!**
private final OnClickListener launch_phone = new OnClickListener() {
@Override
public void onClick(View v) {
public void launch_phone (String number) {
String numberToDial = "tel:"+number;
}
getContext().startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(numberToDial)));
}
};
private final OnClickListener launch_web = new OnClickListener() {
@Override
public void onClick(View v) {
getContext().startActivity(new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://www.google.es")));
}
};
**¡¡¡THROUBLE!!!**
private final OnClickListener goBack = new OnClickListener() {
@Override
public void onClick(View v) {
getContext().startActivity(new Intent(getContext(), NO.class));
}
};
}
Вот где я немного потерял. Я должен определить 2 действия:
1- дозвона 2- GoBack ключ
Телефон дозвона Я не знаю, как определить это прямо здесь. Я определил другим способом, когда я впервые создавал это приложение, и он отлично работал. Но теперь, когда у меня много действий, я должен сделать это, и здесь он показывает ошибку, потому что это не способ сделать Это.
С помощью кнопки «назад» мне нужно только определить, что при нажатии этой кнопки он должен вернуться к активности, но опять же, в этом типе класса я не знаю, как его определить.
Y Не делайте это с фрагментами? http://developer.android.com/guide/components/fragments.html –
Ну, это может быть другим способом. Я просто новичок в этом мире андроида, и мне еще многое предстоит узнать. В любом случае, любое решение для чего я спросил? У меня много работы, и я хотел бы, чтобы она работала именно так. Тогда я посмотрю, как это сделать с фрагментами, если у меня есть время. – masmic
@ A.S. просто прочитал ссылку, не может это нам, потому что я разрабатываю Android 2.3. другое решение? – masmic