如何从附加片段内部以编程方式打开主导航抽屉?
How can i open the main navigation drawer programmatically from inside the attached fragment?
我创建了一个导航抽屉activity,我想删除activity的工具栏并在不同的片段中使用自定义工具栏,现在我找不到任何打开和打开的方法从片段内部关闭导航抽屉。
就像在主导航中一样 activity 可以通过单击汉堡菜单打开和关闭抽屉,但是我怎样才能从附加的片段中打开抽屉。
首先创建导航抽屉的静态实例activity然后调用public从你的片段中改变片段的方法如下
public class MainActivity extends AppCompatActivity
{
static MainActivity instance;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
instance=this;
}
public static MainActivity getInstance()
{
return instance;
}
public void changeFragment(Fragment targetFragment)
{
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fl_main_container, targetFragment, "fragment")
.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.commit();
}
}
Fragment调用方式如下
MainActivity mainActivity=MainActivity.getInstance();
mainActivity.changeFragment(new FragmentHome());
使用自定义侦听器:
class Frag extends Fragment{
NavigationOpenListener listener;
public interface NavigationOpenListener{
public void OnDrawerOpen();
}
public void openDrawer(){ // Call this method when you want to open drawer from your Fragment
if(listener!=null)
listener.OnDrawerOpen();
}
public void setOnDrawerOpenListener(NavigationOpenListener onDrawerOpenListener){
this.listener=onDrawerOpenListener;
}
}
听听你的 Activity
:
Frag frag1=new Frag();
frag1.setOnDrawerOpenListener(new Frag.NavigationOpenListener() {
@Override
public void OnDrawerOpen() {
yourDrawerLayout.openDrawer(GravityCompat.START);
}
});
我创建了一个导航抽屉activity,我想删除activity的工具栏并在不同的片段中使用自定义工具栏,现在我找不到任何打开和打开的方法从片段内部关闭导航抽屉。 就像在主导航中一样 activity 可以通过单击汉堡菜单打开和关闭抽屉,但是我怎样才能从附加的片段中打开抽屉。
首先创建导航抽屉的静态实例activity然后调用public从你的片段中改变片段的方法如下
public class MainActivity extends AppCompatActivity
{
static MainActivity instance;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
instance=this;
}
public static MainActivity getInstance()
{
return instance;
}
public void changeFragment(Fragment targetFragment)
{
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fl_main_container, targetFragment, "fragment")
.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.commit();
}
}
Fragment调用方式如下
MainActivity mainActivity=MainActivity.getInstance();
mainActivity.changeFragment(new FragmentHome());
使用自定义侦听器:
class Frag extends Fragment{
NavigationOpenListener listener;
public interface NavigationOpenListener{
public void OnDrawerOpen();
}
public void openDrawer(){ // Call this method when you want to open drawer from your Fragment
if(listener!=null)
listener.OnDrawerOpen();
}
public void setOnDrawerOpenListener(NavigationOpenListener onDrawerOpenListener){
this.listener=onDrawerOpenListener;
}
}
听听你的 Activity
:
Frag frag1=new Frag();
frag1.setOnDrawerOpenListener(new Frag.NavigationOpenListener() {
@Override
public void OnDrawerOpen() {
yourDrawerLayout.openDrawer(GravityCompat.START);
}
});