Android 在片段中使用导航抽屉和工具栏
我正在开发一个android应用程序,我想在一个片段中使用一个工具栏和一个导航抽屉。我创建了一个名为Supportclass的内部类,然后在onCreateView方法中使用了名为setUptoolbar的方法,但出现了一个异常错误。 你觉得我该怎么办?提前谢谢你,我的英语不好,很抱歉。:) 片段代码:Android 在片段中使用导航抽屉和工具栏,android,android-fragments,material-design,Android,Android Fragments,Material Design,我正在开发一个android应用程序,我想在一个片段中使用一个工具栏和一个导航抽屉。我创建了一个名为Supportclass的内部类,然后在onCreateView方法中使用了名为setUptoolbar的方法,但出现了一个异常错误。 你觉得我该怎么办?提前谢谢你,我的英语不好,很抱歉。:) 片段代码: public class FragmentVRList extends Fragment { @Override public View onCreateView(LayoutInflater
public class FragmentVRList extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_main,container,false);
View cardView = inflater.inflate(R.layout.card_vr,container,false);
Generator generator = new Generator();
RecyclerView recyclerView = (RecyclerView)rootView.findViewById(R.id.recycle);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
AdapterVRList adapter = new AdapterVRList(getActivity(), Generator.getData());
recyclerView.setAdapter(adapter);
recyclerView.setNestedScrollingEnabled(false);
SupportClass supportClass = new SupportClass();
supportClass.setUptoolbar(getActivity(),rootView);
final TeacherNet teacher = new TeacherNet(getActivity());
int Length = Generator.getData().size();
final JSONObject object = new JSONObject();
for (int position = 1;position<Length;position++){
switch (position){
case 1:
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
object.put("vrcode","1");
teacher.SelectContent(object);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
case 2:
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
object.put("vrcode","2");
teacher.SelectContent(object);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
case 3:
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
object.put("vrcode","3");
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
}
return rootView;
}
private class SupportClass extends AppCompatActivity{
public void setUptoolbar(Activity activity, View view){
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawerLayout = (DrawerLayout) view.findViewById(R.id.drawer);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(activity,drawerLayout,toolbar,0,0);
toggle.syncState();
drawerLayout.addDrawerListener(toggle);
}
}
}
public类FragmentVRList扩展了Fragment{
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图根视图=充气机。充气(右布局。活动主容器,假);
视图卡片视图=充气机。充气(右布局。卡片\u vr,容器,假);
发电机=新发电机();
RecycleView RecycleView=(RecycleView)rootView.findViewById(R.id.recycle);
setLayoutManager(新的LinearLayoutManager(getActivity());
adaptervrlistadapter=新的AdapterVRList(getActivity(),Generator.getData());
recyclerView.setAdapter(适配器);
recyclerView.setNestedScrollingEnabled(false);
SupportClass SupportClass=新的SupportClass();
setUptoolbar(getActivity(),rootView);
最终教师网教师=新教师网(getActivity());
int Length=Generator.getData().size();
最终的JSONObject对象=新的JSONObject();
对于(int position=1;position您使用了错误的层次结构。正确的方法是:
活动->包含工具栏、抽屉和碎片夹(例如。
框架布局(或viewpager)
现在,如果您想从片段中的某个操作打开抽屉,您必须在片段中添加抽象事件侦听器,该侦听器将由活动实现
查看github上的此快速链接了解更多信息:您的方法完全错误。您可以在不定义扩展活动的新类的情况下执行此操作。您始终可以通过getActivity()
引用基础活动。即使您想保留引用,也只需使用MainActivity a=(MainActivity)getActivity()
假设您的片段已附加到MainActivity
。然后对a
进行操作。由于您正在使用
SupportClass supportClass = new SupportClass();
活动是使用Context.startActivity(Intent-Intent)
启动的。似乎您不打算启动新的活动。您只想更改基础活动的属性。因此,正如我上面所说,使用
MainActivity a=(MainActivity)getActivity()
并像a.setSupportActionBar()一样玩a
片段内的活动!OMG@BirendraSingh你的意思是什么?它不是一个活动,它只是一个类,它扩展了AppCompativity,只是为了使用setSupportActionBar方法。这和我直接回答的一样。