2016-03-08 76 views
1

对于代码转储抱歉,我是Android新手,不知道问题出在哪里。我试图在我的android应用中实现滑动视图,并且遇到了一些麻烦。我试过this tutorialthis video,但是我收到了一些错误。我想在我的MainActivity尝试在Android中实现滑动视图时的错误

这里的标签式界面是我MainActivity.java

package com.loomius.loomius; 

import android.os.Bundle; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar); 
     setSupportActionBar(myToolbar); 

     ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     PagerAdapter pagerAdapter = new FixedTabsPagerAdapter(getSupportFragmentManager()); 
     viewPager.setAdapter(pagerAdapter); 

    } 
} 

我得到这个错误getSupporFragmentManager()

'FixedTabsPagerAdapter(android.app.FragmentManager)' in 'com.loomius.loomius.FixedTabsPagerAdapter' cannot be applied to '(android.support.v4.app.FragmentManager)' 

,这里是我的FixedTabsPagerAdapter.java

package com.loomius.loomius; 

import android.app.FragmentManager; 
import android.content.Context; 
import android.support.v13.app.FragmentPagerAdapter; 
import android.support.v4.app.Fragment; 

import values.MatchesFragment; 
import values.SuggestedSongsFragment; 
import values.UserFragment; 


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

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

    @Override 
    public Fragment getItem(int position) { 
     switch(position) { 
      case 0: 
       return new SearchFragment(); 
      case 1: 
       return new UserFragment(); 
      case 2: 
       return new MatchesFragment(); 
      case 3: 
       return new SuggestedSongsFragment(); 
      default: 
       return null; 
     } 
    } 

    Context context; 

    @Override 
    public CharSequence getPageTitle (int position) { 
     switch(position) { 
      case 0: 
       return context.getResources().getString(R.string.search_frag_title); 
      case 1: 
       return context.getResources().getString(R.string.user_frag_title); 
      case 2: 
       return context.getResources().getString(R.string.matches_frag_title); 
      case 3: 
       return context.getResources().getString(R.string.sugg_frag_title); 
      default: 
       return null; 

     } 
    } 
} 

我得到这个错误在重写的方法getItem

'getItem(int)' in 'com.loomius.loomius.FixedTabsPagerAdapter' clashes with 'getItem(int)' in 'android.support.v13.app.FragmentPagerAdapter'; attempting to use incompatible return type 

返回类型Fragment我把android.support.v4.view.ViewPager小部件在我activity_main.xml正下方android.support.v7.widget.Toolbar部件。

+0

改变'进口android.support.v4.app.Fragment;'和'进口android.support.v4.app.FragmentPagerAdapter;' –

回答

0

看看您的FixedTabPagerAdapter构造函数,您试图在传递android.support.v4.app.FragmentManager类型的片段管理器时引用android.app.FragmentManager实例,它们是两个不同的类。

将您的FixedTabPageAdapter中的FragmentManager的类型更改为android.support.v4.app.FragmentManager并且它应该解决该问题。

+0

我这样做,并它删除了所有错误,但当我尝试在设备中打开该活动时,应用程序崩溃。为什么? – Rockstar5645

+0

post logcat .... –

+0

很难说没有看到日志,你可以在这里发布崩溃日志? –

0

对于带有选项卡的滑动页面,请执行以下操作。

在github上下载或复制以下两个文件并粘贴您的项目。 除了setDistributeEvenly方法外,这与developers.google.com上的相同。

https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/widget/SlidingTabLayout.java

https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/widget/SlidingTabStrip.java

activity_main.xml中

<your.package.name.SlidingTabLayout 
    android:clickable="true" 
    android:id="@+id/tabs" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    > 
</your.package.name.SlidingTabLayout> 

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

MyAdapter.java(在这里,我使用的两页只)

class MyPagerAdapter extends FragmentPagerAdapter 
{ 
    String[] title = {"All","Favourites"}; 
    public MyPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 
    @Override 
    public Fragment getItem(int position) { 
     Fragment fragment=null; 
     if (position==0) 
      fragment= new All(); 
      if (position==1) 
       fragment= new Favourites(); 
     return fragment; 
    } 
    @Override 
    public int getCount() { 
     return 2; 
    } 
     @Override 
     public CharSequence getPageTitle(int position) { 
      return title[position]; 
    } 
} 

tab_view.xml(查看选项卡的唯一,如果你想你也可以在这里使用ImageView)

<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    > 
    <TextView 
     android:id="@+id/tab_title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="" 
     android:padding="15dp" 
     android:textStyle="bold" 
     android:textSize="25dp" 
     /> 
    </FrameLayout> 

MainActivity.java

private SlidingTabLayout tabLayout; 
private ViewPager pager; 
tabLayout= (SlidingTabLayout) findViewById(R.id.tabs); 
pager = (ViewPager) findViewById(R.id.pager); 
tabLayout.setCustomTabView(R.layout.tab_view,R.id.tab_title); 
MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager()); 
pager.setAdapter(adapter); 
tabLayout.setDistributeEvenly(true); 
tabLayout.setViewPager(pager);