如何在android中打开有意图和无意图的活动中点击按钮的片段



我尝试了以下代码:

Intent in= new Intent(Activity1.this,Fragment.class);
startactivity(in);

这不是碎片的工作方式,碎片必须附加到Activity。要获得所需的效果,您必须启动一个包含要显示的片段的新Activity,或者在当前Activity中显示新片段。

为了决定采用哪种方法,我会考虑您希望Fragment如何影响界面的导航。如果您希望用户能够使用back按钮返回到上一个视图,则应该启动一个新的Activity。否则,应将当前Activity中的视图替换为新的Fragment

尽管可以将Fragment添加到后堆栈,但只有当您对用户界面的结构有信心时,我才会尝试这样做。

要在当前Activity中显示新片段,可以使用FragmentTransaction:

Fragment fragment = CustomFragment.newInstance();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container_layout, fragment).commit();

在onCreate或您的意图中编写此代码:

 FragmentManager fm = getSupportFragmentManager();
 YourFragment fragment = new YourFragment();
 fm.beginTransaction().add(R.id.main_contenier,fragment).commit();

未通过Intent打开碎片。

您应该使用片段管理器。

Fragment fragment= new YourFragment(); 
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, fragment); // fragment container id in first parameter is the  container(Main layout id) of Activity
transaction.addToBackStack(null);  // this will manage backstack
transaction.commit(); 

片段的示例

public class MyFragment extends Fragment implements View.OnClickListener {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view= inflater.inflate(R.layout.fragment_my, container, false);
    Button button1= (Button) view.findViewById(R.id.button1_Id);
    Button button2= (Button) view.findViewById(R.id.button2_Id);

    return view;
}
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
   Fragment fragment= new YourFragment(); 
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, fragment); // fragmen container id in first parameter is the  container(Main layout id) of Activity
transaction.addToBackStack(null);  // this will manage backstack
transaction.commit();
}
});
}

最新更新