Android FragmentDrawer FragmentDrawer=getActivity()。getSupportFragmentManager()显示我的编码错误
在下一个代码中:Android FragmentDrawer FragmentDrawer=getActivity()。getSupportFragmentManager()显示我的编码错误,android,android-fragments,android-activity,Android,Android Fragments,Android Activity,在下一个代码中: import android.support.v4.app.Fragment; import android.content.res.Configuration; import android.support.design.widget.NavigationView; import android.support.v4.app.FragmentManager; import android.support.v4.app.DialogFragmen
import android.support.v4.app.Fragment;
import android.content.res.Configuration;
import android.support.design.widget.NavigationView;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v7.widget.Toolbar;
public class MainActivity extends AppCompatActivity {
private DrawerLayout mDrawer;
private Toolbar toolbar;
private DrawerLayout dlDrawer;
private ActionBarDrawerToggle drawerToggle;
private NavigationView nvDrawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar=(Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mDrawer =(DrawerLayout)findViewById(R.id.drawer_layout);
dlDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawerToggle = setupDrawerToggle();
nvDrawer = (NavigationView) findViewById(R.id.nvView);
setupDrawerContent(nvDrawer);
final ActionBar ab=getSupportActionBar();
ab.setHomeAsUpIndicator(R.drawable.ic_one);
ab.setDefaultDisplayHomeAsUpEnabled(true);
dlDrawer.setDrawerListener(drawerToggle);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.drawer_view, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId())
{
case R.id.home:
mDrawer.openDrawer(GravityCompat.START);
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
drawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
drawerToggle.onConfigurationChanged(newConfig);
}
private void setupDrawerContent(NavigationView navigationView) {
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
selectDrawerItem(menuItem);
return true;
}
});
}
public void selectDrawerItem(MenuItem menuItem) {
Fragment fragment = null;
Class fragmentClass;
switch(menuItem.getItemId()) {
case R.id.nav_first_fragment:
fragmentClass = FirstFragment.class;
break;
case R.id.nav_second_fragment:
fragmentClass = SecondFragment.class;
break;
case R.id.nav_third_fragment:
fragmentClass = ThirdFragment.class;
break;
default:
fragmentClass = FirstFragment.class;
}
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit();
menuItem.setChecked(true);
setTitle(menuItem.getTitle());
mDrawer.closeDrawers();
}
private ActionBarDrawerToggle setupDrawerToggle() {
return new ActionBarDrawerToggle(this, dlDrawer, toolbar, R.string.drawer_open, R.string.drawer_close);
}
}
App_main.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main_activity_appbar">
<include layout="@layout/app_bar"
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"></include>
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E3F2FD"
android:id="@+id/main_container"
>
<fragment
android:id="@+id/nav_drawer"
android:name="askselva.com.sampematerial.NavigationDrawerFragment"
android:layout_width="280dp"
android:layout_height="match_parent"
android:layout_gravity="start"
tools:layout="@layout/fragment_navigation_drawer"></fragment>
</FrameLayout>
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
这是我在LogCat中遇到的错误,我在如何解决这个问题中遇到了错误。我应该如何在活动中使用片段。片段活动还是活动?我是新手,请帮帮我。。
提前谢谢 getActivity()在fragment类中可用。由于您的活动中已经存在u r,只需删除对getActivity()的调用。片段管理器的Ur代码将是
FragmentManager fragmentManager = getSupportFragmentManager();
此外,我们的mainactivity应该扩展FragmentActivity,以获得一个SupportFragmentManager实例。i、 e
public class MainActivity extends FragmentActivity {
在继续之前,您还需要学习片段的基础知识
有关详细信息,请查看此链接。请提示我清除此错误。。
public class MainActivity extends FragmentActivity {