Java 要从listview单击启动活动,但我的类不扩展活动
我在viewpager中有一个listview。我想启动一个新的活动,或者如果可能的话,如果我单击列表视图中的项目,为多个xml创建相同的活动 但我的班级不扩大活动范围 这是我的代码:Java 要从listview单击启动活动,但我的类不扩展活动,java,android,listview,android-listview,Java,Android,Listview,Android Listview,我在viewpager中有一个listview。我想启动一个新的活动,或者如果可能的话,如果我单击列表视图中的项目,为多个xml创建相同的活动 但我的班级不扩大活动范围 这是我的代码: public class SampleListFragment extends ScrollTabHolderFragment implements OnScrollListener { private static final String ARG_POSITION = "position";
public class SampleListFragment extends ScrollTabHolderFragment implements OnScrollListener {
private static final String ARG_POSITION = "position";
private ListView mListView;
private ArrayList<String> mListItems;
private int mPosition;
public static Fragment newInstance(int position) {
SampleListFragment f = new SampleListFragment();
Bundle b = new Bundle();
b.putInt(ARG_POSITION, position);
f.setArguments(b);
return f; }
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPosition = getArguments().getInt(ARG_POSITION);
mListItems = new ArrayList<String>();
if (mPosition==0){
mListItems.add("Game" );
mListItems.add(".iphone " );
mListItems.add("xxx" );
mListItems.add("yyy" );
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch (position){
case 0 : // i want to start new activity if i clicked in game
break;
case 1 : //start a new activity if i clicked in iphone
break;
}
}
private Context getApplicationContext() {
// TODO Auto-generated method stub
return null;
}
});
} else if (mPosition==1){
mListItems.add(". item - currnet page:حة 1 " );
} else if (mPosition==2){
mListItems.add(". item - currnet page:حة2 " );
} else if (mPosition==3){
mListItems.add(". item - currnet page:حة 3 " );
} else if (mPosition==4){
mListItems.add(". item - currnet page:حة 4 " );}}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_list, null);
mListView = (ListView) v.findViewById(R.id.listView);
View placeHolderView = inflater.inflate(R.layout.view_header_placeholder, mListView, false);
mListView.addHeaderView(placeHolderView);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mListView.setOnScrollListener(this);
mListView.setAdapter(new ArrayAdapter<String>(getActivity(), R.layout.list_item, android.R.id.text1, mListItems));}
@Override
public void adjustScroll(int scrollHeight) {
if (scrollHeight == 0 && mListView.getFirstVisiblePosition() >= 1) {
return;
}
mListView.setSelectionFromTop(1, scrollHeight);}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (mScrollTabHolder != null)
mScrollTabHolder.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount, mPosition);
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// nothing
}
}
公共类SampleListFragment扩展了ScrollTabHolderFragment在CrollListener上的实现{
私有静态最终字符串ARG_POSITION=“POSITION”;
私有列表视图;
私人阵列列表;
私人投资;
公共静态片段newInstance(int位置){
SampleListFragment f=新的SampleListFragment();
Bundle b=新Bundle();
b、 putInt(ARG_位置,位置);
f、 设置参数(b);
返回f;}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mPosition=getArguments().getInt(ARG_位置);
mListItems=新的ArrayList();
如果(位置==0){
添加(“游戏”);
添加(“.iphone”);
添加(“xxx”);
添加(“yyy”);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
开关(位置){
案例0://如果我在游戏中单击,我想开始新活动
打破
案例1://如果我在iphone中单击,则启动新活动
打破
}
}
私有上下文getApplicationContext(){
//TODO自动生成的方法存根
返回null;
}
});
}else if(位置==1){
添加(“.item-current页面:ح㶛1”);
}else if(位置==2){
添加(“.item-current页面:حة2”);
}else if(位置==3){
添加(“.item-current页面:حة3”);
}else if(位置==4){
mListItems.add(“.item-current页面:ح㶡4”);}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图v=充气机。充气(R.layout.fragment_列表,空);
mListView=(ListView)v.findViewById(R.id.ListView);
视图占位符视图=充气机。充气(R.layout.View\u header\u占位符,mListView,false);
mListView.addHeaderView(占位符视图);
返回v;
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
mListView.setOnScrollListener(这个);
setAdapter(新的ArrayAdapter(getActivity(),R.layout.list_项,android.R.id.text1,mListItems));}
@凌驾
公共滚动(整数滚动高度){
如果(scrollHeight==0&&mListView.getFirstVisiblePosition()>=1){
返回;
}
mListView.setSelectionFromTop(1,滚动高度);}
@凌驾
public void onScroll(AbsListView视图、int firstVisibleItem、int visibleItemCount、int totalItemCount){
if(mScrollTabHolder!=null)
mScrollTabHolder.onScroll(视图、firstVisibleItem、visibleItemCount、totalItemCount、位置);
}
@凌驾
公共无效onScrollStateChanged(AbsListView视图,int scrollState){
//没什么
}
}
您可以拨打
Intent intent = new Intent(getActivity(), YourActivity.class);
getActivity().startActivity(intent);
当您想从
片段开始一个新的活动时,可能是因为非活动类没有自己的上下文
因此,您需要上下文来启动另一个活动
这个代码应该适合你
Intent intent = new Intent(getApplicationContext(),yourActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext.startactivity(intent);
也许你们应该在新任务的意图中加入标志。试试看,有什么问题吗<代码>它不工作
很难理解。它会崩溃吗?什么也没发生?它崩溃了,如何在意图中添加标志?你能解释一下我还是android初学者吗:(是的,我知道,我代码中的语句是真的吗?)mListView.setOnItemClickListener(新的OnItemClickListener(){@Override public void onItemClick(AdapterView父对象,视图视图,int位置,长id){开关(位置){调用的含义是什么?是否必须标识getApplicationContext()方法?或者它已经存在?我复制了我的代码并忘记更改它,这是您的意图的名称。如果不从活动类获取上下文并使用它,它将已经存在。我无法执行GetApplicationContext方法?因为我有这个SampleListFragment f=new SampleListFragment();从要开始的活动获取上下文。请参阅了解如何从其他活动获取上下文