Я хочу установить SettingsDrawer как фрагмент в нескольких действиях (НастройкиДайзер отобразит после нажатия на определенную кнопку). Фон ящика настроек должен быть z текущей деятельностью, к сожалению, я попытался установить фрагмент static (в деятельности xml), а также динамически. Для первой попытки я получил раздувание ошибки фрагмента класса, а для динамического ive - нулевой указатель. Вот моя версия динамически:Настройки Ящик как фрагмент
фрагмент SettingsDrawer Класс
public class SettingsDrawer extends Fragment{
Context mContext;
ArrayList<SettingsDrawerItem> items;
ListView listView;
DrawerLayout mDrawerLayout;
RelativeLayout content;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.settings_drawer_layout, null);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
mContext=getContext();
mDrawerLayout = (DrawerLayout) view.findViewById(R.id.drawerLayout);
listView = (ListView) view.findViewById(R.id.settingsList);
DrawListAdapter adapter = new DrawListAdapter(mContext, items);
listView.setAdapter(adapter);
content = (RelativeLayout)view.findViewById(R.id.drawerPane);
openAndCollapseDrawerList();
}
public SettingsDrawer() {
mContext=getContext();
items = new ArrayList<>();}
public void openAndCollapseDrawerList()
{
if (mDrawerLayout.isDrawerOpen(Gravity.LEFT))
mDrawerLayout.closeDrawer(content);
else
mDrawerLayout.openDrawer(content);
}
Настройки Ящика раскладка
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="280dp"
android:layout_height="match_parent"
android:id="@+id/drawerPane"
android:layout_gravity="start">
<ListView
android:id="@+id/settingsList"
android:layout_width="280dp"
android:layout_height="match_parent"
android:layout_below="@+id/logoBox"
android:choiceMode="singleChoice"
android:background="#ffffffff" />
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
активность Часть, где я инициализировать фрагмент
private void initSettingsDrawer() {
Button settingsDrawerButton =(Button)findViewById(R.id.settingsDrawer);
settingsDrawerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Fragment fragment = null;
Class fragmentClass = null;
fragmentClass = SettingsDrawer.class;
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.activity_main, fragment).commit();
}
});
}
Это дает мне исключение nullPointer.
Исключение нулевого указателя приходит на какой линии? вы можете вставить журнал сбоев –
Невозможно найти вид активности в строке fragmentManager.beginTransaction(). replace (R.id.activity_main, fragment) .commit(); – Expiredmind
ваш фрагмент null, я думаю. можете ли вы вставить свой код фрагмента? –