У меня есть res / layout / main_menu_layout. xml file:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
>
<sidekick.cpp.CMainMenuButton
android:id="@+id/manualMainMenuButton"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:textSize="18sp"
android:text="@string/main_menu_button_manual_text" />
<sidekick.cpp.CMainMenuButton
android:id="@+id/editorMainMenuButton"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:textSize="18sp"
android:text="@string/main_menu_button_editor_text" />
<sidekick.cpp.CMainMenuButton
android:id="@+id/exitMainMenuButton"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:textSize="18sp"
android:text="@string/main_menu_button_exit_text" />
</LinearLayout>
Этот макет используется в следующем классе:
package sidekick.cpp;
import android.widget.*;
import android.content.*;
import android.view.*;
public class CMainMenuLayout extends LinearLayout {
public CMainMenuLayout(Context context) {
super(context);
this.setOrientation(VERTICAL);
View view = LayoutInflater.from(getContext()).inflate(
R.layout.main_menu_layout, null);
this.addView(view);
} }
Сейчас Я хочу использовать макет во фрагменте. Если я использую идентификатор макета (R.layout.main_menu_layout
) в onCreateView()
, то приведенный ниже код работает:
public class CMainMenuFragment extends Fragment implements View.OnClickListener {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.main_menu_layout, container, false);
}
...
}
Но мне нужно использовать класс CMainLayout, а не R.layout.main_menu_layout
. Код ниже, кажется, тоже работает, но это правильно?
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
CMainMenuLayout layout = new CMainMenuLayout(this.getContext());
return layout;
}