![](/img/trans.png)
[英]How to attach an onclick listener to Android Studio's navigation drawer activity?
[英]How to set onClick listener on navigation drawer
它在SlidingMenuFragment.java中 ,我希望列出的每个项目都是可点击的。 请帮助实现这一目标。
抽屉物品
我希望这3个可点击,以便我可以打开一个新活动。
data.add("One");
data.add("Two");
data.add("Three");
感谢您的帮助。 下面的代码来自http://manishkpr.webheavens.com/android-material-design-navigation-drawer-example/
package com.manishkpr.androidmaterialnavigationdrawer;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.*;
public class SlidingMenuFragment extends Fragment {
List<String>data;
ListView list_view;
SlidingMenuListAdapter adapter;
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_sliding_menu, null);
setUpView(root);
return root;
}
void setUpView(ViewGroup root){
list_view = (ListView)root.findViewById(R.id.list_view);
initList();
setUpClick();
}
void initList(){
data = new ArrayList<String>();
data.add("One");
data.add("Two");
data.add("Three");
adapter = new SlidingMenuListAdapter(getActivity(),data);
list_view.setAdapter(adapter);
}
void setUpClick(){
list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
MainActivity.obj.closeDrawer();
Toast.makeText(getActivity(),"Hi "+position,Toast.LENGTH_SHORT).show();
}
});
}
}
可以在以下android文档中找到更详尽的解释的更干净的实现: http : //developer.android.com/training/implementing-navigation/nav-drawer.html
就是说,看起来您已经有了一些可单击的列表项,现在要做的就是在ItemClickListener中启动新活动。 您可以通过引用'position'参数使每个项目做不同的事情:
list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
MainActivity.obj.closeDrawer();
Toast.makeText(getActivity(),"Hi "+position,Toast.LENGTH_SHORT).show();
// Start 'YourActivity' when first item is clicked
if(position == 0){
Intent = new Intent(getActivity(), YourActivity.class);
getActivity().startActivity(intent)
}
}
});
我认为重要的是,您必须学习一些更基本的知识,例如如何创建新的活动并在与导航抽屉之类的特定事物过于联系之前启动它们。
试试这个
list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
MainActivity.obj.closeDrawer();
Toast.makeText(getActivity(),"Hi "+position,Toast.LENGTH_SHORT).show();
//Try to include this to your code
getActivity().startActivity(new Intent(this, YourAnotherActivity.class));
}
});
作为示例,您还可以在代码中尝试如下操作:
if(position == 0) {
Intent AlbumsIntent = new Intent(MainActivity.this, avtivity.class);
startActivity(AlbumsIntent);
}else if (position==1){
Intent ArtistsIntent = new Intent(MainActivity.this, avtivity1.class);
startActivity(ArtistsIntent);
}else if (position==2){
Intent SongsIntent = new Intent(MainActivity.this, activity2.class);
startActivity(SongsIntent);
}else if (position==3){
Intent CardIntent = new Intent(MainActivity.this, activity3.class);
startActivity(CardIntent);
}else if (position==4){
Intent LogoutIntent = new Intent(MainActivity.this, avtivity4.class);
startActivity(LogoutIntent);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.