我只有1个活动,里面有2个碎片。启动活动时,片段A将启动。用户键入后,单击该按钮将指向片段B.所以我想要做的是通过添加“后退箭头”......就像这样< - 在左上角。
是否与 FragmentManager.popBackStack()有关?请指教! THX
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager manager=getSupportFragmentManager();
FragmentTransaction transaction=manager.beginTransaction();
first first=new first();
transaction.add(R.id.top,first);
transaction.commit();
}
}
first.java
public class first extends Fragment implements View.OnClickListener{
Button get_button;
EditText get_input_name;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_first,container,false);
get_input_name=(EditText)rootView.findViewById(R.id.input_name);
get_button=(Button)rootView.findViewById(R.id.submit);
get_button.setOnClickListener(this);
return rootView;
}
public void onClick(View v){
FragmentManager manager=getFragmentManager();
FragmentTransaction transaction=manager.beginTransaction();
two Two=new two();
Bundle bundle = new Bundle();
bundle.putString("input_name_value",get_input_name.getText().toString());
Two.setArguments(bundle);
transaction.replace(R.id.top,Two);
transaction.commit();
}
}
two.java
public class two extends Fragment implements View.OnClickListener {
TextView get_display_input;
ImageView get_back_button;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_two, container, false);
}
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
get_display_input=(TextView)getActivity().findViewById(R.id.display_input);
get_back_button=(ImageView) getActivity().findViewById(R.id.back_button);
Bundle bundle = getArguments();
String get_name = bundle.getString("input_name_value");
//int store_get_input=Integer.parseInt(get_name);
get_display_input.setText("You have entered "+get_name);
}
public void onClick(View v){
// WHAT TO DO HERE IN ORDER TO RETURN TO PREVIOUS Fragment when clicking the button?
}
}
更准确地说,请参阅截图。
答案 0 :(得分:5)
您可以使用FragmentManager
的{{3}}方法,将其放在后面按钮的onClickListener
内:
if (getFragmentManager().getBackStackEntryCount() != 0) {
getFragmentManager().popBackStack();
}
如果您使用工具栏的默认后退按钮,即主页按钮,则可以将此代码放入onOptionsItemSelected()
的{{1}}方法中来执行此操作:
Activity
或者,如果您希望在硬件后退按钮上按相同的行为按,则覆盖@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
if (getFragmentManager().getBackStackEntryCount() != 0) {
getFragmentManager().popBackStack();
}
return true;
}
return super.onOptionsItemSelected(item);
}
类中的onBackPressed()
方法,如下所示:
Activity
答案 1 :(得分:2)
查看培训文档here - 它们应该给你一个良好的开端。
MainActivity
答案 2 :(得分:1)
您只需要这一行代码!
getFragmentManager().popBackStackImmediate();
答案 3 :(得分:1)
是的,它与FragmentManager.popBackStack();
看看这里,有很多方法: https://developer.android.com/reference/android/app/FragmentManager.html#popBackStack
对我而言,getFragmentManager().popBackStackImmediate();
正是如此。
答案 4 :(得分:1)
在您处理硬件后退按钮的活动中:
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
因此对于按钮点击方法:
getFragmentManager().popBackStack();
答案 5 :(得分:0)
我知道我回答这个问题已经来不及了,但是您可以调用getActivity.onBackpress();。单击该后退图标的方法。