我正在尝试在Android中创建滑动视图

时间:2016-02-07 11:40:51

标签: android

程序运行没有错误。但是当我尝试运行应用程序时,它显示不幸停止了。我的调试器无法正常工作。 代码如下。

activity_main.xml中

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent" android:layout_height="match_parent">

</ViewPager>

 </LinearLayout>

MainActivity.java

package com.example.pathak.swipe;


import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends FragmentActivity {

ViewPager viewPager=null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    viewPager=(ViewPager)findViewById(R.id.pager);
    FragmentManager fragmentManager=getSupportFragmentManager();
    viewPager.setAdapter(new MyAdapter(fragmentManager));
}

}

class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int i) {

    Fragment fragment=null;
    if(i==0)
    {
        fragment=new FragmentA();
    }
    else if(i==1)
    {
        fragment=new FragmentB();
    }
    else if(i==2)
    {
        fragment=new FragmentC();
    }
    else if(i==3)
    {
        fragment=new FragmentD();
    }
    return fragment;
   }

   @Override
   public int getCount() {
    return 4;
  }
  }

fragment.xml之

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" android:layout_width="match_parent"
   android:background="#FFCC00"
   android:layout_height="match_parent">
 </LinearLayout>

FragmentA.java

package com.example.pathak.swipe;

 import android.os.Bundle;
 import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;

 /**
 * Created by Pathak on 2/3/2016.
 */
  public class FragmentA extends Fragment {    

    @Override

   public View onCreateView(LayoutInflater layoutInflater,ViewGroup container,Bundle savedInstanceState)
{
    return layoutInflater.inflate(R.layout.fragment_a,container,false);
}
}

同样创建了另外三个片段及其xmls。

1 个答案:

答案 0 :(得分:0)

我刚刚复制了这个场景,以便更快地识别出错误,我注意到你的“activity_main”中你需要使用支持库中的ViewPager,所以改变你在xml中声明它的方式:

    <android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

   </android.support.v4.view.ViewPager>

发生这种情况的原因是,在您的MainActivity中,当您创建ViewPager时,您从支持库中选择了一个,您也可以看到导入也匹配。但是,您稍后将常规ViewPager从XML传递到您创建的那个并且它们不匹配。你正在使用v4 ....一个很好!

现在应用运行良好。您自己识别此问题的方法是在运行应用程序之后,在崩溃之后,您可以查看日志记录

  

Android监视器

你会看到十几条红线,如果你向上滚动到开头,你有时可以很容易地确定你的问题是什么。在这种情况下,我看到它正在膨胀ViewPager,然后我注意到你没有使用正确的ViewPager。祝你好运,如果你在YouTube或这里很难看,有关于ViewPager的信息,请仔细阅读。

相关问题