在Java Android Apps中打开最后一个片段视图

费德里科:

为我的应用程序创建了一个底部导航,想知道如何做到这一点,以便当用户打开该应用程序时,它返回到他们正在查看最后一个片段此刻,即使您仅切换应用程序一秒钟,它也会立即返回到主页。提前致谢!

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.MenuItem;

import com.google.android.material.bottomnavigation.BottomNavigationView;

public class MainActivity extends AppCompatActivity {
    MediaPlayer mediaPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        BottomNavigationView bottomnav = findViewById(R.id.bottom_menu);
        bottomnav.setOnNavigationItemSelectedListener(navListener);

        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_layout, new HomeFragment()).commit();


       mediaPlayer = MediaPlayer.create(this, R.raw.clickandboop);


    }

    private final BottomNavigationView.OnNavigationItemSelectedListener navListener =
            new BottomNavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                    Fragment selectedFragment = null;


                    switch (menuItem.getItemId()) {
                        case R.id.nav_home:
                            selectedFragment = new HomeFragment();
                            mediaPlayer.start();
                            break;
                        case R.id.nav_favourites:
                            selectedFragment = new FavFragment();
                            mediaPlayer.start();
                            break;
                        case R.id.nav_trophies:
                            selectedFragment = new TrophiesFragment();
                            mediaPlayer.start();
                            break;
                        case R.id.nav_info:
                            selectedFragment = new InfoFragment();
                            mediaPlayer.start();
                            break;


                    }
                    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_layout, selectedFragment).commit();

                    return true;
                }
            };
ianhanniballake:

片段已经使您恢复到原来的状态。

这意味着您需要用来包装replace()呼叫,savedInstanceState == null以免破坏刚刚重新创建的Fragment:

if (savedInstanceState == null) {
    getSupportFragmentManager().beginTransaction()
        .replace(R.id.fragment_layout, new HomeFragment())
        .commit();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Android-RelativeLayout中的最后一个视图消失

在Java中显示Android计算器的最后一个运算符

我如何在按索引列出Java Android Studio中获得最后一个号码

尝试从Android Studio 3.5.3中的另一个片段打开片段

安卓/ Java的:使用特定的标签(不是最后一个)在Chrome中打开链接

Android:从另一个打开一个片段

Android Java,setOnTouchListener 每 0.25 秒从字符串中删除 1 个最后一个字符

如何从Android中的另一个片段类调用一个片段的方法

Android - 从另一个片段内的回收器视图调用片段

在Android的自定义列表视图中从一个片段移动到另一个片段

Android RecyclerView查找ItemDecoration的第一个和最后一个视图

如何编写一个从数组中随机选择一个引号的函数?-Android Java

视图模型不能创建类的Android的Java MVVM的一个实例

返回Android中onBackPressed上的上一个片段

在Android SDK / Java中,如何从片段中的方法处理XML视图(图像按钮,文本视图)?

在Android中仅显示最后一个ArrayList

android中的最后一个字节

在android ListView中,最后一个元素重复显示

Android从另一个片段打开一个dialogfragment会引发转换错误

将片段加载到Android中的另一个片段中

Android:添加一个简单的片段

在Java中查找Regex的最后一个索引

在Java中删除ArrayList的最后一个对象

Java中的最后一个字符

删除数组中的最后一个空格-Java

从堆栈中读取最后一个值(java)

在 Java 中,最后一个 ch++ 是如何回答“:;”的?

如何在Android(java或kotlin)中将多个数组与相同的第一个或最后一个元素组合?

片段Java Android中的layoutInflater崩溃