Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将导航抽屉切换添加到工具栏_Java_Android_Android Studio - Fatal编程技术网

Java 如何将导航抽屉切换添加到工具栏

Java 如何将导航抽屉切换添加到工具栏,java,android,android-studio,Java,Android,Android Studio,我已经做了一切,我可以看到导航抽屉,但我的应用程序正在崩溃。谁能解释一下下面代码中的问题是什么。现在,每当我尝试打开活动,它都会崩溃 public class ForumActivity extends AppCompatActivity implements AdvancedWebView.Listener{ public AdvancedWebView webView; private ProgressBar mPbar = null; private static final Stri

我已经做了一切,我可以看到导航抽屉,但我的应用程序正在崩溃。谁能解释一下下面代码中的问题是什么。现在,每当我尝试打开活动,它都会崩溃

public class ForumActivity extends AppCompatActivity implements AdvancedWebView.Listener{

public AdvancedWebView webView;
private ProgressBar mPbar = null;

private static final String  url = "https://discuss.flarum.org/";
String webURL, webTitle ;

private DrawerLayout mDrawerLayout;
private Fragment fragment;
private FragmentManager fragmentManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ((CustomApplication)getApplication()).checkUserLogin();
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    setContentView(R.layout.activity_forum);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    Bundle bundle = getIntent().getExtras();
    if(bundle != null){
        fragment = new ProfileFragment();
    }else{
        fragment = new TopicFragment();
    }

    fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.fragment_content, fragment).commit();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {

            int id = item.getItemId();

            if (id == R.id.nav_topic) {
                fragment = new TopicFragment();
            }
            else if(id == R.id.nav_profile){
                fragment = new ProfileFragment();
            }
            else if(id == R.id.nav_scores){
                fragment = new ScoreFragment();
            }
            else if(id == R.id.nav_share){
                fragment = new ScoreFragment();
            }
            else if(id == R.id.nav_contact){
                startActivity(new Intent(ForumActivity.this, ContactActivity.class));
            }
            else if(id == R.id.nav_settings){
                fragment = new SettingsFragment();
            }
            else if(id == R.id.nav_logout){
                ((CustomApplication)getApplication()).getShared().setUserData("");
                Intent logoutIntent = new Intent(ForumActivity.this, LoginActivity.class);
                logoutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(logoutIntent);
                finish();
            }

            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            ft.replace(R.id.fragment_content, fragment).commit();

            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            drawer.closeDrawer(GravityCompat.START);
            return true;
        }

    });

    mPbar = (ProgressBar) findViewById(R.id.loader);

    webView = (AdvancedWebView) findViewById(R.id.newWeb);
    webView.loadUrl(url);
    webView.setListener(this, this);

    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setAppCacheEnabled(true);
    webSettings.setDomStorageEnabled(true);
    webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
    webSettings.setAllowFileAccess(true);

    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);

    webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
            AdvancedWebView newWebView = new AdvancedWebView(ForumActivity.this);
            WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
            transport.setWebView(newWebView);
            resultMsg.sendToTarget();
            return true;
        }
    });

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
        webSettings.setAllowUniversalAccessFromFileURLs(true);
    } else {
        webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    }

    webView.setWebViewClient(new WebViewClient(){
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            mPbar.setVisibility(View.VISIBLE);
        }
        public void onPageFinished(WebView view, String url) {
            mPbar.setVisibility(View.GONE);
        }
    });

    webView.setOnKeyListener( new View.OnKeyListener() {
        @Override
        public boolean onKey( View v, int keyCode, KeyEvent event ) {
            if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
                webView.goBack();
                return true;
            }
            return false;
        }
    });

    webView.setThirdPartyCookiesEnabled(true);
    webView.setCookiesEnabled(true);

}




@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case android.R.id.home:
            mDrawerLayout.openDrawer(GravityCompat.START);
            return true;
    }

    return super.onOptionsItemSelected(item);


}

@Override
protected void onResume() {
    super.onResume();
    webView.onResume();
}

@Override
protected void onPause() {
    webView.onPause();
    super.onPause();
}

@Override
protected void onDestroy() {
    webView.onDestroy();
    super.onDestroy();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    webView.onActivityResult(requestCode, resultCode, intent);
}

@Override
public void onBackPressed() {
    if (!webView.onBackPressed()) { return; }
    super.onBackPressed();
}


@Override
public void onPageStarted(String url, Bitmap favicon) {

}

@Override
public void onPageFinished(String url) {
    webURL = webView.getUrl();
    webTitle = webView.getTitle();

}

@Override
public void onPageError(int errorCode, String description, String failingUrl) {

}

@Override
public void onDownloadRequested(String url, String suggestedFilename, String mimeType, long contentLength, String contentDisposition, String userAgent) {

}

@Override
public void onExternalPageRequest(String url) {

}
}

我知道我做了一些错误的上面,但我已经包括在布局的一切。如果有人能帮上忙,那就太好了。

您还应该共享布局和活动代码,它已经有了导航抽屉。不管怎样,你们可以按照指南去做

对于布局文件,您需要将CoordinatorLayout放置在抽屉布局中,如下所示,并添加导航视图检查已具有导航抽屉的其他活动的xml布局,然后复制并替换为以下示例中的布局:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
                    android:id="@+id/drawer_layout"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:fitsSystemWindows="true">

    <android.support.design.widget.CoordinatorLayout
        xmlns:app="http://schemas.android.com/apk/res-auto"
                    android:id="@+id/coordinator_layout"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:fitsSystemWindows="true">

        <android.support.design.widget.AppBarLayout
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:theme="@style/AppTheme.AppBarOverlay">

            <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />
        </android.support.design.widget.AppBarLayout>

        <im.delight.android.webview.AdvancedWebView
            android:id="@+id/newWeb"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            ></im.delight.android.webview.AdvancedWebView>

        <ProgressBar
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/loader"
            android:layout_weight="1"
            android:layout_gravity="center_vertical|center_horizontal|center"/>

    </android.support.design.widget.CoordinatorLayout>

    <!-- Replace this with the one in other activity layout -->
    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:menu="@menu/drawer_view"/>

</android.support.v4.widget.DrawerLayout>

在这之后,您将需要在活动类中添加一些代码。您可以查看我在上面放置的链接,阅读后您可以了解需要从其他活动复制哪些代码,这些活动已经有导航抽屉。

如果您想在第二个活动中复制导航抽屉,您需要将其添加到第二个活动中,并复制逻辑,以便它们显示相同的内容。就是这样,我在第一个活动中找不到逻辑没有代码我们很难这么做。添加了仪表板的代码我已经完成了所有工作,但我无法单击导航栏中的项目