Autore Topic: Navigation Drawer e WebView  (Letto 833 volte)

Offline vortex

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
Navigation Drawer e WebView
« il: 14 Novembre 2013, 12:33:04 CET »
0
Ciao a tutti,sono un programmatore java neofita davvero alle prime armi,mi serviva solo capire una cosa....ho creato un'applicazione webview funzionante (che rimanda a uno specifico sito) e ho inglobato nell'applicazione anche un navigation drawer anch'esso funzionante,ora,è possibile associare le voci del menu (drawer) a specifiche pagine del sito in oggetto?Mi piacerebbe poter navigare nel sito attraverso il navigation drawer,è fattibile?

Offline vortex

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
Re:Navigation Drawer e WebView
« Risposta #1 il: 03 Dicembre 2013, 11:46:27 CET »
0
Allora,mi rispondo da solo.... :D
Son riuscito ad associare la webview al navigation drawer e ora tutti gli elementi del menu puntano a una pagina web,l'unica difficoltà è che ora mi piacerebbe che l'applicazione partisse (all'avvio) con l'homepage del sito,posto un po' di codice nel caso servisse anche ad altri:

Activity main xml

Codice: [Seleziona]
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <!-- The main content view -->
 
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <!-- The navigation drawer -->

    <ListView
        android:id="@+id/drawer_list"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#F3F3F4"
        android:choiceMode="singleChoice"
        android:divider="#d9d9d9"
        android:dividerHeight="1dp" />

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

MainActivity java

Codice: [Seleziona]

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

       
        private DrawerLayout mDrawerLayout;

       
        private ListView mDrawerList;

       
        private ActionBarDrawerToggle mDrawerToggle;

       
        private String mTitle = "";

        @SuppressLint("NewApi")
        @Override
        protected void onCreate(Bundle savedInstanceState) {

                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);

                mTitle = "";
                getActionBar().setTitle(mTitle);

               
                mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

                mDrawerList = (ListView) findViewById(R.id.drawer_list);

               
                mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
                                R.drawable.ic_drawer, R.string.drawer_open,
                                R.string.drawer_close) {

                       
                        public void onDrawerClosed(View view) {
                                getActionBar().setTitle(mTitle);
                                invalidateOptionsMenu();

                        }

                       
                        public void onDrawerOpened(View drawerView) {
                                getActionBar().setTitle("");
                                invalidateOptionsMenu();
                        }

                };

               
                mDrawerLayout.setDrawerListener(mDrawerToggle);

               
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(),
                                R.layout.drawer_list_item, getResources().getStringArray(R.array.menus));

               
                mDrawerList.setAdapter(adapter);

               
                getActionBar().setHomeButtonEnabled(true);

               
                getActionBar().setDisplayHomeAsUpEnabled(true);

               
                mDrawerList.setOnItemClickListener(new OnItemClickListener() {

                        @Override
                        public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {

                               
                                String[] menuItems = getResources().getStringArray(R.array.menus);

                               
                                mTitle = menuItems[position];

                               
                                WebViewFragment rFragment = new WebViewFragment();

                               
                                Bundle data = new Bundle();
                                data.putInt("position", position);
                                data.putString("url", getUrl(position));
                                rFragment.setArguments(data);
                               
                               
                               
                                FragmentManager fragmentManager = getFragmentManager();

                               
                                FragmentTransaction ft = fragmentManager.beginTransaction();

                               
                                ft.replace(R.id.content_frame, rFragment);

                               
                                ft.commit();

                               
                                mDrawerLayout.closeDrawer(mDrawerList);

                        }
                });
        }

        protected String getUrl(int position) {
                switch (position) {
                case 0:
                        return "http:/";
                case 1:
                        return "http://";
                case 2:
                        return "http://";
                case 3:
                        return "http://";
                case 4:
                        return "http://";
                case 5:
                        return "http://";
                case 6:
                        return "http://";
                default:
                        return "http://";
                }
        }

        @Override
        protected void onPostCreate(Bundle savedInstanceState) {
                super.onPostCreate(savedInstanceState);
                mDrawerToggle.syncState();
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                if (mDrawerToggle.onOptionsItemSelected(item)) {
                        return true;
                }
                return super.onOptionsItemSelected(item);
        }

       
        @Override
        public boolean onPrepareOptionsMenu(Menu menu) {
               
                boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);

                menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
                return super.onPrepareOptionsMenu(menu);
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                getMenuInflater().inflate(R.menu.main, menu);
                return true;
        }
}

Fragmentwebview java

Codice: [Seleziona]

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;

public class WebViewFragment extends Fragment {

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                        Bundle savedInstanceState) {
               
               
                int position = getArguments().getInt("position");
               
                String url = getArguments().getString("url");

               
                String[] menus = getResources().getStringArray(R.array.menus);

               
                View v = inflater.inflate(R.layout.fragment_layout, container, false);

               
                getActivity().getActionBar().setTitle(menus[position]);
               
               
                WebView webView = (WebView)v.findViewById(R.id.webView);
                webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl(url);

                return v;
        }
}

Ora,con tutto sto popò di roba l'applicazione funziona perfettamente e riesco a vedere gli url dell'array clikkando sul navigation drawer,quello che vorrei è che lanciando l'applicazione anzichè vedere una pagina bianca come succede ora,si potesse vedere direttamente la home del sito,sapete aiutarmi?
« Ultima modifica: 03 Dicembre 2013, 11:51:52 CET da vortex »

Offline rs94

  • Utente normale
  • ***
  • Post: 227
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson Xperia Arc S
  • Sistema operativo:
    Windows 8
Re:Navigation Drawer e WebView
« Risposta #2 il: 03 Dicembre 2013, 13:57:45 CET »
0
Alla fine dell'oncreate
Codice (Java): [Seleziona]
webview.loadurl(il_tuo_url)
L'unica certezza è il dubbio.
Dubitare di se stessi è il primo segno di intelligenza.

Offline vortex

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
Re:Navigation Drawer e WebView
« Risposta #3 il: 03 Dicembre 2013, 14:20:16 CET »
0
Alla fine dell'oncreate
Codice (Java): [Seleziona]
webview.loadurl(il_tuo_url)

Ciao,intanto ti ringrazio per la risposta!
Intendi l'onCreate primario del file mainactivity esatto?Comunque faccio un po' di prove e ti faccio sapere,grazie!

Post unito: 04 Dicembre 2013, 11:44:00 CET
Ho risolto,inserendo la webview nel mainactivity java e modificando opportunamente il file xml principale.  8-)
« Ultima modifica: 04 Dicembre 2013, 11:44:00 CET da vortex, Reason: Merged DoublePost »

Offline desila

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
Re:Navigation Drawer e WebView
« Risposta #4 il: 26 Maggio 2014, 22:15:39 CEST »
0
Buonasera a tutti, riprendo questo topic, perchè ho lo stesso problema, con lo stesso script,  vorrei che l'applicazione partisse (all'avvio) con l'homepage del sito, ho provato ad inserire il mio url dopo webview.loadurl, ma non parte la home del mio sito.........