Zoel:
Soy un principiante con el desarrollo de Android y necesito su ayuda, tengo una aplicación sencilla con una vista web para cargar páginas HTML locales, puse todos mis archivos dentro de los activos, ahora en mi cajón de navegación Quiero tener algunos enlaces que texto / abrir estas páginas.
aquí está mi código:
MainActivity.java
package com.example.psalms;
import android.os.Bundle;
import android.view.View;
import android.view.Menu;
import android.webkit.WebSettings;
import android.webkit.WebView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.navigation.NavigationView;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
public class MainActivity extends AppCompatActivity {
private AppBarConfiguration mAppBarConfiguration;
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.activity_main_webview);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
DrawerLayout drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
.setDrawerLayout(drawer)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);
// Enable Javascript
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.loadUrl("file:///android_asset/index.html");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
return NavigationUI.navigateUp(navController, mAppBarConfiguration)
|| super.onSupportNavigateUp();
}
}
activity_main_drawer.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single">
<item
android:title="@string/home" />
<item
android:title="@string/erminia" />
<item
android:title="@string/psalmos1" />
<item
android:title="@string/psalmos2" />
<item
android:title="@string/psalmos3" />
<item
android:title="@string/psalmos4" />
<item
android:title="@string/psalmos5" />
<item
android:title="@string/psalmos6" />
<item
android:title="@string/psalmos7" />
<item
android:title="@string/psalmos8" />
<item
android:title="@string/psalmos9" />
<item
android:title="@string/psalmos10" />
<item
android:title="@string/psalmos11" />
<item
android:title="@string/psalmos12" />
<item
android:title="@string/psalmos13" />
<item
android:title="@string/psalmos14" />
<item
android:title="@string/psalmos15" />
<item
android:title="@string/psalmos16" />
<item
android:title="@string/psalmos17" />
<item
android:title="@string/psalmos18" />
<item
android:title="@string/psalmos19" />
<item
android:title="@string/psalmos20" />
<item
android:title="@string/psalmos21" />
<item
android:title="@string/psalmos22" />
<item
android:title="@string/psalmos23" />
<item
android:title="@string/psalmos24" />
<item
android:title="@string/psalmos25" />
<item
android:title="@string/psalmos26" />
<item
android:title="@string/psalmos27" />
<item
android:title="@string/psalmos28" />
<item
android:title="@string/psalmos29" />
<item
android:title="@string/psalmos30" />
<item
android:title="@string/psalmos31" />
<item
android:title="@string/psalmos32" />
<item
android:title="@string/psalmos33" />
<item
android:title="@string/psalmos34" />
<item
android:title="@string/psalmos35" />
<item
android:title="@string/psalmos36" />
<item
android:title="@string/psalmos37" />
<item
android:title="@string/psalmos38" />
<item
android:title="@string/psalmos39" />
<item
android:title="@string/psalmos40" />
<item
android:title="@string/psalmos41" />
<item
android:title="@string/psalmos42" />
<item
android:title="@string/psalmos43" />
<item
android:title="@string/psalmos44" />
<item
android:title="@string/psalmos45" />
<item
android:title="@string/psalmos46" />
<item
android:title="@string/psalmos47" />
<item
android:title="@string/psalmos48" />
<item
android:title="@string/psalmos49" />
<item
android:title="@string/psalmos50" />
<item
android:title="@string/psalmos51" />
<item
android:title="@string/psalmos52" />
<item
android:title="@string/psalmos53" />
<item
android:title="@string/psalmos54" />
<item
android:title="@string/psalmos55" />
<item
android:title="@string/psalmos56" />
<item
android:title="@string/psalmos57" />
<item
android:title="@string/psalmos58" />
<item
android:title="@string/psalmos59" />
<item
android:title="@string/psalmos60" />
<item
android:title="@string/psalmos61" />
<item
android:title="@string/psalmos62" />
<item
android:title="@string/psalmos63" />
<item
android:title="@string/psalmos64" />
<item
android:title="@string/psalmos65" />
<item
android:title="@string/psalmos66" />
<item
android:title="@string/psalmos67" />
<item
android:title="@string/psalmos68" />
<item
android:title="@string/psalmos69" />
<item
android:title="@string/psalmos70" />
<item
android:title="@string/psalmos71" />
<item
android:title="@string/psalmos72" />
<item
android:title="@string/psalmos73" />
<item
android:title="@string/psalmos74" />
<item
android:title="@string/psalmos75" />
<item
android:title="@string/psalmos76" />
<item
android:title="@string/psalmos77" />
<item
android:title="@string/psalmos78" />
<item
android:title="@string/psalmos79" />
<item
android:title="@string/psalmos80" />
<item
android:title="@string/psalmos81" />
<item
android:title="@string/psalmos82" />
<item
android:title="@string/psalmos83" />
<item
android:title="@string/psalmos84" />
<item
android:title="@string/psalmos85" />
<item
android:title="@string/psalmos86" />
<item
android:title="@string/psalmos87" />
<item
android:title="@string/psalmos88" />
<item
android:title="@string/psalmos89" />
<item
android:title="@string/psalmos90" />
<item
android:title="@string/psalmos91" />
<item
android:title="@string/psalmos92" />
<item
android:title="@string/psalmos93" />
<item
android:title="@string/psalmos94" />
<item
android:title="@string/psalmos95" />
<item
android:title="@string/psalmos96" />
<item
android:title="@string/psalmos97" />
<item
android:title="@string/psalmos98" />
<item
android:title="@string/psalmos99" />
<item
android:title="@string/psalmos100" />
<item
android:title="@string/psalmos101" />
<item
android:title="@string/psalmos102" />
<item
android:title="@string/psalmos103" />
<item
android:title="@string/psalmos104" />
<item
android:title="@string/psalmos105" />
<item
android:title="@string/psalmos106" />
<item
android:title="@string/psalmos107" />
<item
android:title="@string/psalmos108" />
<item
android:title="@string/psalmos109" />
<item
android:title="@string/psalmos110" />
<item
android:title="@string/psalmos111" />
<item
android:title="@string/psalmos112" />
<item
android:title="@string/psalmos113" />
<item
android:title="@string/psalmos114" />
<item
android:title="@string/psalmos115" />
<item
android:title="@string/psalmos116" />
<item
android:title="@string/psalmos117" />
<item
android:title="@string/psalmos118" />
<item
android:title="@string/psalmos119" />
<item
android:title="@string/psalmos120" />
<item
android:title="@string/psalmos121" />
<item
android:title="@string/psalmos122" />
<item
android:title="@string/psalmos123" />
<item
android:title="@string/psalmos124" />
<item
android:title="@string/psalmos125" />
<item
android:title="@string/psalmos126" />
<item
android:title="@string/psalmos127" />
<item
android:title="@string/psalmos128" />
<item
android:title="@string/psalmos129" />
<item
android:title="@string/psalmos130" />
<item
android:title="@string/psalmos131" />
<item
android:title="@string/psalmos132" />
<item
android:title="@string/psalmos133" />
<item
android:title="@string/psalmos134" />
<item
android:title="@string/psalmos135" />
<item
android:title="@string/psalmos136" />
<item
android:title="@string/psalmos137" />
<item
android:title="@string/psalmos138" />
<item
android:title="@string/psalmos139" />
<item
android:title="@string/psalmos140" />
<item
android:title="@string/psalmos141" />
<item
android:title="@string/psalmos142" />
<item
android:title="@string/psalmos143" />
<item
android:title="@string/psalmos144" />
<item
android:title="@string/psalmos145" />
<item
android:title="@string/psalmos146" />
<item
android:title="@string/psalmos147" />
<item
android:title="@string/psalmos148" />
<item
android:title="@string/psalmos149" />
<item
android:title="@string/psalmos150" />
<item
android:title="@string/psalmos151" />
</group>
</menu>
mobile_navigation.xml
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mobile_navigation"
app:startDestination="@+id/nav_home">
<fragment
android:id="@+id/nav_home"
android:name="com.example.psalms.ui.home.HomeFragment"
android:label="@string/home"
tools:layout="@layout/fragment_home">
<action
android:id="@+id/action_HomeFragment_to_HomeSecondFragment"
app:destination="@id/nav_home_second" />
</fragment>
<fragment
android:id="@+id/nav_home_second"
android:name="com.example.psalms.ui.home.HomeSecondFragment"
android:label="@string/home_second"
tools:layout="@layout/fragment_home_second">
<action
android:id="@+id/action_HomeSecondFragment_to_HomeFragment"
app:destination="@id/nav_home" />
<argument
android:name="myArg"
app:argType="string" />
</fragment>
<fragment
android:id="@+id/nav_gallery"
android:name="com.example.psalms.ui.gallery.GalleryFragment"
android:label="@string/erminia"
tools:layout="@layout/fragment_gallery" />
<fragment
android:id="@+id/nav_slideshow"
android:name="com.example.psalms.ui.slideshow.SlideshowFragment"
android:label="@string/psalmos1"
tools:layout="@layout/fragment_slideshow" />
</navigation>
Miguel :
En primer lugar hay que colocar en su ID de elemento de menú XML, para que usted sea capaz de distinguir y llamarlos (sí, todos ellos) aquí es un ejemplo:
<item
android:id="@+id/nav_home"
android:title="@string/home" />
Es necesario añadir onNavigationItemSelectedListener:
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener
A continuación, añadir el método:
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
String url = "";
switch (item.getItemId()) {
case R.id.nav_home: {
url = "https://google.com";
break;
}
// Add all your items as case
}
// We will make this method later.
openUrl(url);
mDrawerLayout.closeDrawer(GravityCompat.START);
return true;
}
Añadir esta por debajo de su código navigationView:
navigationView.setNavigationItemSelectedListener(this);
Crear esta función:
private void openUrl(final String url) {
if (url!= null) {
// This can also be an intent to your WebView Activity, passing the link in the extras
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browserIntent);
}
}