Я создаю приложение, которое содержит 5 вкладок в нижнем меню навигации. Одна из этих вкладок содержит действие с настройками по умолчанию, которое я создал с помощью Android Studio. Событие onClick на каждой вкладке отображает отдельный фрагмент. Когда я нажимаю на кнопку «Настройки», фрагмент действия настроек загружается без ошибок, однако он пуст. Я искал в другом месте, но все еще не нашел ответа. Моя проблема заключается не в отображении группы настроек в другом фрагменте, а в создании в первый раз самого фрагмента настроек.
Я прослушиваю событие щелчка в основном действии. Затем я загружаю правильный класс фрагмента, этот класс вызывает класс .SettingsActivity , который генерирует представление, используя settings_activity. xml, и загружает «настройки» из root_parameters. xml. Я ничего не изменил из активности по умолчанию, созданной Android Studio. И я загружаю его так же, как загружаю другие фрагменты, и все они работают, включая фрагмент Google Maps.
Это мой .MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView bottomNav = findViewById(R.id.bottom_navigation);
bottomNav.setOnNavigationItemSelectedListener(navListener);
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new HomeFragment()).commit();
}
private BottomNavigationView.OnNavigationItemSelectedListener navListener =
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.map_nav:
selectedFragment = new MapFragment();
break;
case R.id.settings_nav:
selectedFragment = new OldSettingsFragment();
break;
case R.id.user_nav:
selectedFragment = new UserFragment();
break;
case R.id.test_settings_nav:
selectedFragment = new SettingsFragment();
break;
default:
selectedFragment = new HomeFragment();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, selectedFragment).commit();
return true;
}
};
}
Вот мой .SettingsFragment
public class SettingsFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.settings_activity, container, false);
}
}
Это .SettingsActivity , созданный Android Studio
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.settings, new SettingsFragment())
.commit();
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
public static class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.root_preferences, rootKey);
}
}
}
Это settings_activity. xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".TestSettings.SettingsActivity">
<FrameLayout
android:id="@+id/settings"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
И наконец это это мои root_preferences. xml
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory app:title="@string/app_name">
<EditTextPreference
app:key="signature"
app:title="@string/signature_title"
app:useSimpleSummaryProvider="true" />
<ListPreference
app:defaultValue="reply"
app:entries="@array/reply_entries"
app:entryValues="@array/reply_values"
app:key="reply"
app:title="@string/reply_title"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/sync_header">
<SwitchPreferenceCompat
app:key="sync"
app:title="@string/sync_title" />
<SwitchPreferenceCompat
app:dependency="sync"
app:key="attachment"
app:summaryOff="@string/attachment_summary_off"
app:summaryOn="@string/attachment_summary_on"
app:title="@string/attachment_title" />
</PreferenceCategory>
ПОМОГИТЕ.