使用Web应用程序进行简单的XML导航-怎么做?

时间:2018-10-02 15:25:46

标签: android web-applications

我是Android Studio的初学者,但设法通过Android后退按钮创建了具有后向导航功能的Web应用程序。

我希望改进Web App并添加一个底部菜单,该菜单是我使用Navigation.XML并与Web App结合使用的。

我需要在底部的按钮中添加三个操作:“上一步”,“主页”和“联系人”(转到Web应用程序中的页面)。

任何建议都值得赞赏。不确定如何在三个按钮内添加导航操作,这将带您进入Web应用

下面的导航XML

    <item
        android:id="@+id/navigation_home"
        android:icon="@drawable/ic_home_black_24dp"
        android:title="@string/title_home" />

    <item
        android:id="@+id/navigation_dashboard"
        android:icon="@drawable/ic_dashboard_black_24dp"
        android:title="@string/title_dashboard" />

    <item
        android:id="@+id/navigation_notifications"
        android:icon="@drawable/ic_notifications_black_24dp"
        android:title="@string/title_notifications" />

下面的主要活动java

package com.schiedel.myapplication;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.widget.TextView;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.view.KeyEvent;

public class MainActivity extends AppCompatActivity {

    private TextView mTextMessage;
    private WebView webview;

    private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.navigation_home:
                    mTextMessage.setText(R.string.title_home);
                    return true;
                case R.id.navigation_dashboard:
                    mTextMessage.setText(R.string.title_dashboard);
                    return true;
                case R.id.navigation_notifications:
                    mTextMessage.setText(R.string.title_notifications);
                    return true;
            }
            return false;
        }
    };


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webview = (WebView) findViewById(R.id.webView);

        webview.setWebViewClient(new WebViewClient());
        webview.getSettings().setJavaScriptEnabled(true);
        webview.getSettings().setDomStorageEnabled(true);
        webview.setOverScrollMode(WebView.OVER_SCROLL_NEVER);
        webview.loadUrl("https://www.schiedel.com/uk/schiedel-installation-app/");

        mTextMessage = (TextView) findViewById(R.id.message);
        BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
    }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // Check if the key event was the Back button and if there's history
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
            webview.goBack();
            return true;
        }
        // If it wasn't the Back key or there's no web page history, bubble up to the default
        // system behavior (probably exit the activity)
        return super.onKeyDown(keyCode, event);
    }

}

1 个答案:

答案 0 :(得分:0)

将此代码添加到您的代码中

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.navigation_home:
                mTextMessage.setText(R.string.title_home);

       Intent loadMain = new Intent(MainActivity.this, Home.class);
       startActivity(loadMain);

                return true;
            case R.id.navigation_dashboard:
                mTextMessage.setText(R.string.title_dashboard);

       Intent loadMain = new Intent(MainActivity.this, Dashboard.class);
       startActivity(loadMain);

                return true;
            case R.id.navigation_notifications:
                mTextMessage.setText(R.string.title_notifications);

       Intent loadMain = new Intent(MainActivity.this, Notifications.class);
       startActivity(loadMain);

                return true;
        }
        return false;
    }
};

您必须使用它们各自的xml创建树Java类。

 public class Home extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);


}
}

或者您可以使用片段:

public class MainActivity extends AppCompatActivity implements 
BottomNavigationView.OnNavigationItemSelectedListener {

private int mSelectedId;

/**
 * Create Navigation Bar and load the main fragment "statistics".
 */

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    loadFragment(new FragmentHome());

    BottomNavigationView navigation = findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(this);

    mSelectedId=navigation.getSelectedItemId();
}

/**
 * Checks for any event in the Navigation Bar.
 * If the item selected is the same as the actual item
 * Do nothing
 * Else
 * Load new fragment selected.
 */

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

    Fragment fragment = null;

    if (mSelectedId != item.getItemId()) {

        mSelectedId = item.getItemId();

        switch (item.getItemId()) {

            case R.id.statistics:
                fragment = new FragmentHome();
                break;

            case R.id.shops:
                fragment = new FragmentContact();
                break;

            case R.id.products:
                fragment = new FragmentOther();
                break;
        }

    }

    return loadFragment(fragment);
}

private boolean loadFragment(Fragment fragment) {

    //switching fragment
    if (fragment != null) {
        fragment.setArguments(bundle);
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.fragment_container, fragment)
                .commit();
        return true;
    }
    return false;
}

}