Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓碎片反压_Android_Android Fragments - Fatal编程技术网

Android 安卓碎片反压

Android 安卓碎片反压,android,android-fragments,Android,Android Fragments,我有4个片段,即B、C、D。 现在,当我将更多的数据从A添加到B时,我将A添加到后堆栈。 然后我从B移动到C,而不添加到后堆栈。 然后我从C移到D,而不添加到后堆栈。 现在回按我被重定向到A 我再次重复,直到D,现在当我按下后,它显示片段A,再次将我重定向到片段D,再次按下后,它退出应用程序 我希望它能像从D回来的背压一样,它应该总是能让我到达A 有人能帮忙吗 这是密码 我在logcat中得到这个 02-06 13:31:19.395 26930-26930/com.example.user.

我有4个片段,即B、C、D。 现在,当我将更多的数据从A添加到B时,我将A添加到后堆栈。 然后我从B移动到C,而不添加到后堆栈。 然后我从C移到D,而不添加到后堆栈。 现在回按我被重定向到A

我再次重复,直到D,现在当我按下后,它显示片段A,再次将我重定向到片段D,再次按下后,它退出应用程序

我希望它能像从D回来的背压一样,它应该总是能让我到达A

有人能帮忙吗

这是密码

我在logcat中得到这个

02-06 13:31:19.395 26930-26930/com.example.user.fragmentbackbackbackbackback示例I/dalvikvm﹕ 找不到从方法引用的方法android.view.ViewGroup.isTransitionGroup android.support.v4.app.FragmentTransitionCompat21.CaptureTransitionViews

02-06 13:31:19.395 26930-26930/com.example.user.fragmentbackbackbackbackbackexample W/dalvikvm﹕ VFY:无法解析虚拟方法11340:Landroid/view/ViewGroup;。isTransitionGroup Z

02-06 13:31:19.395 26930-26930/com.example.user.fragmentbackbackbackbackback示例I/dalvikvm﹕ 找不到从方法android.support.v4.app.FragmentTransitionCompat21.findNamedViews引用的方法android.view.view.getTransitionName

02-06 13:31:19.395 26930-26930/com.example.user.fragmentbackbackbackbackbackexample W/dalvikvm﹕ VFY:无法解析虚拟方法11182:Landroid/view/view;。getTransitionName Ljava/lang/String

02-06 13:31:19.405 26930-26930/com.example.user.fragmentbackbackbackbackback示例I/dalvikvm﹕ 找不到从方法android.support.v4.app.FragmentTransitionCompat21.getTransitionName引用的方法android.view.view.getTransitionName

02-06 13:31:19.405 26930-26930/com.example.user.fragmentbackbackbackbackbackexample W/dalvikvm﹕ VFY:无法解析虚拟方法11182:Landroid/view/view;。getTransitionName Ljava/lang/String

02-06 13:31:19.415 26930-26930/com.example.user.fragmentbackbackbackbackbackexample W/dalvikvm﹕ 无法解析Landroid/support/v4/app/FragmentTransitionCompat21$1的超类;1303

02-06 13:31:19.415 26930-26930/com.example.user.fragmentbackbackbackbackbackexample W/dalvikvm﹕ “Landroid/support/v4/app/FragmentTransitionCompat21$1;”类链接失败

02-06 13:31:19.415 26930-26930/com.example.user.fragmentbackbackbackbackback示例E/dalvikvm﹕ 找不到从方法引用的类“android.support.v4.app.FragmentTransitionCompat21$1” android.support.v4.app.FragmentTransitionCompat21.setEpicenter

02-06 13:31:19.425 26930-26930/com.example.user.fragmentbackbackbackbackbackexample W/dalvikvm﹕ VFY:无法解析新实例294 Landroid/support/v4/app/FragmentTransitionCompat21$1;在Landroid/support/v4/app/FragmentTransitionCompat21中

02-06 13:31:19.425 26930-26930/com.example.user.fragmentbackbackbackbackbackexample W/dalvikvm﹕ 无法解析Landroid/support/v4/app/FragmentTransitionCompat21$3的超类;1303

02-06 13:31:19.425 26930-26930/com.example.user.fragmentbackbackbackbackbackexample W/dalvikvm﹕ “Landroid/support/v4/app/FragmentTransitionCompat21$3;”类链接失败

02-06 13:31:19.435 26930-26930/com.example.user.fragmentbackbackbackbackback示例E/dalvikvm﹕ 找不到类“android.support.v4.app.FragmentTransitionCompat21$3”,引用自方法android.support.v4.app.FragmentTransitionCompat21.setSharedElementEpicenter

02-06 13:31:19.435 26930-26930/com.example.user.fragmentbackbackbackbackbackexample W/dalvikvm﹕ VFY:无法解析新实例296 Landroid/support/v4/app/FragmentTransitionCompat21$3;在Landroid/support/v4/app/FragmentTransitionCompat21中

02-06 13:31:19.435 26930-26930/com.example.user.fragmentbackbackbackbackbackexample W/dalvikvm﹕ 无法解析Landroid/support/v4/app/FragmentTransitionCompat21$1的超类;1303

02-06 13:31:19.435 26930-26930/com.example.user.fragmentbackbackbackbackbackexample W/dalvikvm﹕ “Landroid/support/v4/app/FragmentTransitionCompat21$1;”类链接失败

02-06 13:31:19.445 26930-26930/com.example.user.fragmentbackbackbackbackbackexample W/dalvikvm﹕ 无法解析Landroid/support/v4/app/FragmentTransitionCompat21$3的超类;1303

02-06 13:31:19.445 26930-26930/com.example.user.fragmentbackbackbackbackbackexample W/dalvikvm﹕ “Landroid/support/v4/app/FragmentTransitionCompat21$3;”类链接执行此操作失败。。 对于片段A,请执行以下操作

getSupportFragmentManager().beginTransaction()
                .add(R.id.containerMain, new FragmentA()).addToBackStack("BACKSTACK_FRAGMENT_A")
                .commit();
getSupportFragmentManager().beginTransaction().add(android.R.id.content,new FragmentA()).addToBackStack("BACKSTACK_FRAGMENT_A").commit();
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    ((Button) mView.findViewById(R.id.buttonA)).setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            setFragment(new FragmentB());
        }
    });
}
public String TAG = "";

@Override
public void onBackPressed() {
    if (TAG.equals("FragmentD")) {
        getSupportFragmentManager().beginTransaction().add(R.id.container, new FragmentA()).commit();
    }else{
        super.onBackPressed();
    }
}
MainActivity mainActivity;

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    mainActivity = (MainActivity) activity;
    mainActivity.TAG = getClass().getSimpleName();
}
对于其他片段,请不要使用addToBackStack

现在,当您从其他片段返回时,您将始终返回片段A

更新:

在MainActivity.java中,执行以下操作

getSupportFragmentManager().beginTransaction()
                .add(R.id.containerMain, new FragmentA()).addToBackStack("BACKSTACK_FRAGMENT_A")
                .commit();
getSupportFragmentManager().beginTransaction().add(android.R.id.content,new FragmentA()).addToBackStack("BACKSTACK_FRAGMENT_A").commit();
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    ((Button) mView.findViewById(R.id.buttonA)).setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            setFragment(new FragmentB());
        }
    });
}
public String TAG = "";

@Override
public void onBackPressed() {
    if (TAG.equals("FragmentD")) {
        getSupportFragmentManager().beginTransaction().add(R.id.container, new FragmentA()).commit();
    }else{
        super.onBackPressed();
    }
}
MainActivity mainActivity;

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    mainActivity = (MainActivity) activity;
    mainActivity.TAG = getClass().getSimpleName();
}
在您的FragmentA.java中,执行以下操作

getSupportFragmentManager().beginTransaction()
                .add(R.id.containerMain, new FragmentA()).addToBackStack("BACKSTACK_FRAGMENT_A")
                .commit();
getSupportFragmentManager().beginTransaction().add(android.R.id.content,new FragmentA()).addToBackStack("BACKSTACK_FRAGMENT_A").commit();
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    ((Button) mView.findViewById(R.id.buttonA)).setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            setFragment(new FragmentB());
        }
    });
}
public String TAG = "";

@Override
public void onBackPressed() {
    if (TAG.equals("FragmentD")) {
        getSupportFragmentManager().beginTransaction().add(R.id.container, new FragmentA()).commit();
    }else{
        super.onBackPressed();
    }
}
MainActivity mainActivity;

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    mainActivity = (MainActivity) activity;
    mainActivity.TAG = getClass().getSimpleName();
}
最后更新:

实现愿望的最简单方法

在MainActivity.java中,执行以下操作

getSupportFragmentManager().beginTransaction()
                .add(R.id.containerMain, new FragmentA()).addToBackStack("BACKSTACK_FRAGMENT_A")
                .commit();
getSupportFragmentManager().beginTransaction().add(android.R.id.content,new FragmentA()).addToBackStack("BACKSTACK_FRAGMENT_A").commit();
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    ((Button) mView.findViewById(R.id.buttonA)).setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            setFragment(new FragmentB());
        }
    });
}
public String TAG = "";

@Override
public void onBackPressed() {
    if (TAG.equals("FragmentD")) {
        getSupportFragmentManager().beginTransaction().add(R.id.container, new FragmentA()).commit();
    }else{
        super.onBackPressed();
    }
}
MainActivity mainActivity;

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    mainActivity = (MainActivity) activity;
    mainActivity.TAG = getClass().getSimpleName();
}
在每一个片段中都要这样做

getSupportFragmentManager().beginTransaction()
                .add(R.id.containerMain, new FragmentA()).addToBackStack("BACKSTACK_FRAGMENT_A")
                .commit();
getSupportFragmentManager().beginTransaction().add(android.R.id.content,new FragmentA()).addToBackStack("BACKSTACK_FRAGMENT_A").commit();
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    ((Button) mView.findViewById(R.id.buttonA)).setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            setFragment(new FragmentB());
        }
    });
}
public String TAG = "";

@Override
public void onBackPressed() {
    if (TAG.equals("FragmentD")) {
        getSupportFragmentManager().beginTransaction().add(R.id.container, new FragmentA()).commit();
    }else{
        super.onBackPressed();
    }
}
MainActivity mainActivity;

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    mainActivity = (MainActivity) activity;
    mainActivity.TAG = getClass().getSimpleName();
}

希望有帮助。谢谢;D

只需将super.onBackPressed移除即可;从你的代码中

很难说没有看到一些代码…@KirillVolkov请查看代码,它只是给出了你的
完整的源代码。请在这里粘贴相关的位,我只做了。。。请检查代码,如果您只将片段A添加到backstack,那么您可以只还原到片段A。这毕竟是您想要的!!我希望它能像从D回来的背压一样,它应该总是能让我到达A