gpt4 book ai didi

java - 使用 Fragment 后退按钮 android

转载 作者:行者123 更新时间:2023-11-29 04:46:32 25 4
gpt4 key购买 nike

我正在处理抽屉导航和 fragment ,目前我正面临来自图像的问题考虑( donut )是 HomeFragment 类。我想要实现的是

this

when user navigate Fragment A(Donut) -> Fragment B(Eclair) then again navigates -> Fragment H(kitkat) and then navigates -> Fragment I(Lollipop)

和正在处理它的用户。如果用户按下后退按钮,它可能基于层次结构作为

super.onBackPressed();

As result pressing back results as Fragment I -> Fragment H -> Fragment B -> finally Fragment A.

现在我需要将用户直接导航到 fragment A,而无需转到其他 fragment 类。

我是用

实现的
public class MainActivity extends AppCompatActivity {
//initializing
int check = 0; in MainActivity
....................
...................
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawer);

.................
................

drawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView tv = (TextView) view.findViewById(R.id.textView1);
String aa = tv.getText().toString();
selectItemFragment(position, aa);
}
});

...................
...................
private void selectItemFragment(int position, String aa) {
Fragment fragment2;
FragmentManager fragmentManager = getSupportFragmentManager();
switch (position) {
case 0:
fragment2 = new HomeFragment();
break;
case 1:
fragment2 = new GalaxyFragment();
break;
case 2:
fragment2 = new ShareFragment();
break;
default:
fragment2 = new HomeFragment();
break;
}
check = position;
ffragm = fragment2;
fragmentManager.beginTransaction().replace(R.id.main_fragment_container, fragment2).addToBackStack(null).commit();
drawerList.setItemChecked(position, true);
setTitle(aa);
mDrawerLayout.closeDrawer(drawerList);
}
..........................
............................
@Override
public void onBackPressed() {
if (check == 0) {
finish();
} else {
check = 0;
Fragment fragment2;
FragmentManager fragmentManager = getSupportFragmentManager();
fragment2 = new HomeFragment();
fragmentManager.beginTransaction().replace(R.id.main_fragment_container, fragment2).addToBackStack(null).commit();
}
}

我现在面临问题,考虑当用户在 Galaxyfragment 类或任何其他 fragment 类中工作时,他导航到内部的另一个 fragment 类,然后他按下后退按钮它直接导航到 fragment A。所以,这里我需要使用返回堆栈层次结构,最后到 fragment 类和完成应用程序请参见下面的代码。

public class GalaxyFragment extends Fragment {
Context cc;
Button Addbutton;

public GalaxyFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.home_fragment, container, false);
ll1design = (LinearLayout) v.findViewById(R.id.llone);
Create_list = (Button) v.findViewById(R.id.submit);
Addbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
display_button.setVisibility(View.VISIBLE);
ll1design.setVisibility(View.GONE);
String value = "";
Bundle bundle = new Bundle();
bundle.putString("message", "" + value);
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = new ShareFragment();
fragment.setArguments(bundle);
fragmentManager.beginTransaction().replace(R.id.main_fragment_container, fragment).addToBackStack(null).commit();
}
});
return v;
}
}

所以在这里

i need to(Achieve) use backbutton to working correctly as Galaxy2Fragment -> GalaxyFragment -> HomeFragment class.

任何人都可以给我建议如何在这些类型的情况下处理这些后退按钮 fragment 。欢迎提出建议。谢谢。

最佳答案

最简单的方法是替换这条线

fragmentManager.beginTransaction().replace(R.id.main_fragment_container, fragment2).addToBackStack(null).commit();

FragmentTransaction ft =fragmentManager.beginTransaction()
ft.replace(R.id.main_fragment_container, fragment2)
if(fragmentManger.findFragmentById(R.id.main_fragment_container) instanceof HomeFragment)
ft.addToBackStack(null))
ft.commit();

如果你这样做,你不需要重写 onBackPressed。

关于java - 使用 Fragment 后退按钮 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36889551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com