Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 要从listview单击启动活动,但我的类不扩展活动_Java_Android_Listview_Android Listview - Fatal编程技术网

Java 要从listview单击启动活动,但我的类不扩展活动

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";

我在viewpager中有一个listview。我想启动一个新的活动,或者如果可能的话,如果我单击列表视图中的项目,为多个xml创建相同的活动

但我的班级不扩大活动范围

这是我的代码:

    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();从要开始的活动获取上下文。请参阅了解如何从其他活动获取上下文