2016-03-08 73 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);