java - Android 抽屉导航图像

标签 java android eclipse android-fragments navigation-drawer

您好,我对 Android 抽屉导航有疑问。我在我的应用程序中包含了 Navigation Drawer,一切都很顺利,但我想将图像添加到列表中的每个菜单。

我是 Android 新手,所以如果有人可以帮助我,我将不胜感激,这是 Navigation Drawer 的来源

http://javatechig.com/android/navigation-drawer-android-example

这是我的 WebViewFragments 文件

public class WebViewFragment extends Fragment {
    private WebView mWebView;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        // Retrieving the currently selected item number
        int position = getArguments().getInt("position");

        String url = getArguments().getString("url");

        // List of rivers
        String[] menus = getResources().getStringArray(R.array.menus);

        // Creating view corresponding to the fragment
        View v = inflater.inflate(R.layout.activity_main, container, false);

        // Updating the action bar title
        getActivity().getActionBar().setTitle(menus[position]);

        //Initializing and loading url in webview








        WebView wv = (WebView) getActivity().findViewById(R.id.webView1);
        wv.getSettings().setJavaScriptEnabled(true);
        CookieSyncManager.createInstance(getActivity()); 
        CookieSyncManager.getInstance().startSync();
        wv.loadUrl(url);
        wv.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });


        return v;
    }

    @Override
    public void onResume() {
        super.onResume();
        CookieSyncManager.getInstance().stopSync();

    }
    @Override
    public void onPause() {
        super.onPause();
        CookieSyncManager.getInstance().sync();
    }


}

这是我的 MainActivity
public class MainActivity extends Activity {

    // Within which the entire activity is enclosed
    private DrawerLayout mDrawerLayout;

    // ListView represents Navigation Drawer
    private ListView mDrawerList;

    // ActionBarDrawerToggle indicates the presence of Navigation Drawer in the action bar
    private ActionBarDrawerToggle mDrawerToggle;

    // Title of the action bar
    private String mTitle = "";

    static boolean active = false;
    private String possibleEmail2;
    private WebView mWebView;

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

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

        CookieSyncManager.createInstance(this); 
        CookieSyncManager.getInstance().startSync();

        Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
        Account[] accounts = AccountManager.get(getBaseContext()).getAccounts();
        for (Account account : accounts) {
            if (emailPattern.matcher(account.name).matches()) {
                possibleEmail2 = account.name;


            }
        }

        String finalurl = "http://google.ro/?mail=" + possibleEmail2;

        if (isNetworkAvailable(getBaseContext()))
        {



            mWebView = (WebView) findViewById(R.id.webView1);
            mWebView.getSettings().setJavaScriptEnabled(true);
            try
            {
                Method mWebView = MainActivity.class.getDeclaredMethod("setCacheDisabled", boolean.class);
                mWebView.setAccessible(true);
                mWebView.invoke(null, true);
            }
            catch (Throwable e)
            {
                Log.i("myapp","Reflection failed", e);
            }
            mWebView.loadUrl(finalurl);




        }
        else
        {
            mWebView = new WebView(this);   
            new AlertDialog.Builder(this)
            .setTitle("Connection Error")
            .setMessage("You dont have an active network connection")
            .setPositiveButton("Exit", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) { 
                    finish();
                    System.exit(0);
                }
            })
            .setNegativeButton("Retry", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) { 
                    Intent i = getBaseContext().getPackageManager()
                            .getLaunchIntentForPackage( getBaseContext().getPackageName() );
                    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(i);
                }
            })

            .setIcon(R.drawable.ic_launcher)
            .show();


        }


        mWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if(url.startsWith("setup:"))
                {
                    Intent settupx = new Intent(MainActivity.this, settup.class);
                    startActivity(settupx); 
                }
                if (url.startsWith("tel:")) { 
                    Intent intent = new Intent(Intent.ACTION_DIAL,
                            Uri.parse(url)); 
                    startActivity(intent); 
                }else if(url.startsWith("http:") || url.startsWith("https:")) {

                    view.loadUrl(url);

                }

                return true;



            }



        });










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

        // Getting reference to the DrawerLayout
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

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

        // Getting reference to the ActionBarDrawerToggle
        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
                R.drawable.ic_drawer, R.string.drawer_open,
                R.string.drawer_close) {

            /** Called when drawer is closed */
            public void onDrawerClosed(View view) {
                getActionBar().setTitle(mTitle);
                invalidateOptionsMenu();

            }

            /** Called when a drawer is opened */
            public void onDrawerOpened(View drawerView) {
                getActionBar().setTitle("Meniu");
                invalidateOptionsMenu();
            }

        };

        // Setting DrawerToggle on DrawerLayout
        mDrawerLayout.setDrawerListener(mDrawerToggle);

        // Creating an ArrayAdapter to add items to the listview mDrawerList
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), 
                R.layout.drawer_list_item, getResources().getStringArray(R.array.menus));


        // Setting the adapter on mDrawerList

        mDrawerList.setAdapter(adapter);


        // Enabling Home button
        getActionBar().setHomeButtonEnabled(true);

        // Enabling Up navigation
        getActionBar().setDisplayHomeAsUpEnabled(true);

        // Setting item click listener for the listview mDrawerList
        mDrawerList.setOnItemClickListener(new OnItemClickListener() {

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

                // Getting an array of rivers
                String[] menuItems = getResources().getStringArray(R.array.menus);

                // Currently selected river
                mTitle = menuItems[position];

                // Creating a fragment object
                WebViewFragment rFragment = new WebViewFragment();

                // Passing selected item information to fragment
                Bundle data = new Bundle();
                data.putInt("position", position);
                data.putString("url", getUrl(position));
                rFragment.setArguments(data);


                // Getting reference to the FragmentManager
                FragmentManager fragmentManager = getFragmentManager();

                // Creating a fragment transaction
                FragmentTransaction ft = fragmentManager.beginTransaction();

                // Adding a fragment to the fragment transaction
                ft.replace(R.id.content_frame, rFragment);

                // Committing the transaction
                ft.commit();

                // Closing the drawer
                mDrawerLayout.closeDrawer(mDrawerList);

            }
        });
    }


    public static boolean isNetworkAvailable(Context context) 
    {
        return ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo() != null;
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu items for use in the action bar
        MenuInflater inflater = getMenuInflater();

         inflater.inflate(R.menu.main_activity_actions, menu);
        return super.onCreateOptionsMenu(menu);



    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
        case R.id.action_settings:
            Intent settupx = new Intent(MainActivity.this, settup.class);
            startActivity(settupx);
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

    public static void trimCache(Context context) {
        try {
            File dir = context.getCacheDir();
            if (dir != null && dir.isDirectory()) {
                deleteDir(dir);

            }
        } catch (Exception e) {
            // TODO: handle exception
        }
    }

    public static boolean deleteDir(File dir) {
        if (dir != null && dir.isDirectory()) {
            String[] children = dir.list();
            for (int i = 0; i < children.length; i++) {
                boolean success = deleteDir(new File(dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }

        // <uses-permission
        // android:name="android.permission.CLEAR_APP_CACHE"></uses-permission>
        // The directory is now empty so delete it

        return dir.delete();
    }



    @Override
    public boolean onKeyDown(final int keyCode, final KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
            mWebView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }


    @Override
    protected void onDestroy() {
        // closing Entire Application
        android.os.Process.killProcess(android.os.Process.myPid());
        Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
        editor.clear();
        editor.commit();
        trimCache(this);
        super.onDestroy();
    }


    @Override
    protected void onResume() {
        super.onResume();
        CookieSyncManager.getInstance().stopSync();
}
@Override
protected void onPause() {
    super.onPause();
    CookieSyncManager.getInstance().sync();
}


protected String getUrl(int position) {
    switch (position) {
    case 0:
        return "http://www.muvieplus.com/ab/olxx/register.php";
    case 1:
        return "http://www.muvieplus.com/ab/olxx/addAnunt.php";
    case 2:
        return "http://www.muvieplus.com/ab/olxx/register.php";
    case 3:
        Intent settupx = new Intent(MainActivity.this, settup.class);
        startActivity(settupx); 
    case 4:
        return "http://javatechig.com/category/sencha-touch/";
    case 5:
        return "http://javatechig.com/category/phonegap/";
    case 6:
        return "http://javatechig.com/category/java/";
    default:
        return "http://javatechig.com";
    }
}

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



/** Called whenever we call invalidateOptionsMenu() */
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    // If the drawer is open, hide action items related to the content view
    boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);

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

}

最佳答案

通过thisthis教程。

关于java - Android 抽屉导航图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25210894/

相关文章:

java - 将两个字符串从一个 Activity 传递到另一个 Activity

java - java 不支持调试

java - 在 Fedora 20 Linux 上启动 jdeveloper 时的 Sigenv

java - 如何使用自定义 list 文件在 Eclipse 中构建 JAR?

java - 偶数斐波那契项的总和是错误的

java - Collection.stream() 的实现

android - 如何从 Android 应用程序向 REST Web 服务进行身份验证?

java - 使用自定义类名反序列化具有不同根名称的 json

Java 代码覆盖率的想法?

android - 生成签名 APK 时出现 "Expected resource of type interpolator [ResourceType]"和 "Cannot resolve symbol"错误