简体   繁体   English

通过单击导航抽屉项目打开 URL

[英]Open URL by click on navigation drawer item

My main java code :我的主要java代码:

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
   
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
 
import com.shrikanthravi.customnavigationdrawer2.data.MenuItem;
import com.shrikanthravi.customnavigationdrawer2.widget.SNavigationDrawer;
    
import java.util.ArrayList;
import java.util.List;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
    
public class MainActivity extends AppCompatActivity {
    
    SNavigationDrawer sNavigationDrawer;
    Class fragmentClass;
    public static Fragment fragment;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        sNavigationDrawer = findViewById(R.id.navigationDrawer);
  
        // Menu add
   
        List<MenuItem> menuItems = new ArrayList<>();
 
        menuItems.add(new MenuItem("Home",R.drawable.ic_home));
        menuItems.add(new MenuItem("About us",R.drawable.ic_about));
        menuItems.add(new MenuItem("Subscribe Us",R.drawable.ic_subscribe));
        menuItems.add(new MenuItem("Follow Us",R.drawable.ic_follow));
        menuItems.add(new MenuItem("Rate Us",R.drawable.ic_rate));
  
        sNavigationDrawer.setMenuItemList(menuItems);
 
        fragmentClass = HomeFragment.class;
   
        try {
            fragment = (Fragment)fragmentClass.newInstance();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }
    
        
        if (fragment!= null)
        {
            FragmentManager fragmentManager = getSupportFragmentManager();

   
 fragmentManager.beginTransaction().setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out).replace(R.id.frameLayout, fragment).commit();
    
        }
    
    
        sNavigationDrawer.setDrawerListener(new  NavigationDrawer.DrawerListener() {
            @Override
            public void onDrawerOpening() {
    
            }
    
            @Override
            public void onDrawerClosing() {
    
                try {
                    fragment = (Fragment)fragmentClass.newInstance();
                } catch (IllegalAccessException e) {
                     e.printStackTrace();
                } catch (InstantiationException e) {
                     e.printStackTrace();
                }
    
                if (fragment!= null)
                {
                    FragmentManager fragmentManager = getSupportFragmentManager();
    
                    fragmentManager.beginTransaction().setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out).replace(R.id.frameLayout, fragment).commit();
    
                }
    
    
            }
    
            @Override
            public void onDrawerOpened() {
    
            }
    
            @Override
            public void onDrawerClosed() {
    
            }
    
            @Override
            public void onDrawerStateChanged(int newState) {
    
            }
    
        });
    }
}

My homefragment code :我的 homefragment 代码:

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
    
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

public class HomeFragment extends Fragment
{

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

       View view = inflater.inflate(R.layout.fragment_home,container,false);
       return  view;
    }
}

This code uses fragments.此代码使用片段。 I want to open an URL (example www.google.com ) from click on navigation drawer item.我想通过点击导航抽屉项目打开一个 URL(例如www.google.com )。 Please help, I am new on this android development.请帮忙,我是这个android开发的新手。

When a navigation item is clicked, I do not want this fragment page to open, instead I want to open an URL.当导航项被点击时,我不想打开这个片段页面,而是想打开一个 URL。

Add this inside your listener:在您的侦听器中添加以下内容:

if(fragment instanceof HomeFragment)
{
   Intent browserIntent = new Intent(Intent.ACTION_VIEW,
   Uri.parse("http://www.google.com")); startActivity(browserIntent);
}

EDIT::编辑::

I found the library code that you're using.我找到了您正在使用的库代码。 It has a onClickListener.它有一个 onClickListener。 Try this :尝试这个 :

 sNavigationDrawer.setOnMenuItemClickListener(new SNavigationDrawer.OnMenuItemClickListener() {
            @Override
            public void onMenuItemClicked(int position) {
                if(position==0){
                    Intent browserIntent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.google.com"));
                    startActivity(browserIntent);
                }
            }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM