2015-10-13 2 views
0

В настоящее время я пытаюсь запрограммировать приложение для Android. Я хотел бы иметь там Tab Activity, где я могу использовать один фрагмент для одной вкладки. Я пытался следовать this Tutorial, но Android-студия говорит:Используйте один фрагмент для одной вкладки в TabActivity

Incopatible Types: 
     Required: android.support.v4.app.Fragment 
     Found: de......fragment_nameOfTheFragment 

код моей функции в формулировках активность + импорт:

import android.support.design.widget.TabLayout; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import de.noname.MYNAME.APPNAME.fragment_geocache_details; 
import de.noname.MYNAME.APPNAME.fragment_geocache_details_waypoints; 

@Override 
public Fragment getItem(int position) { 
    switch (position) { 
     case 0: 
      return new fragment_geocache_details_waypoints(); // Here is one fail 
     case 1: 
      return new fragment_geocache_details(); // Here is the other fail 
    } 
} 

Если требуется больше кода, то я буду редактировать свой пост. Но я скопировал код из учебника и просто изменил имена на мои.

+1

Вы можете оставить свой образец кода 'де ...... fragment_nameOfTheFragment'? Расширяет ли он 'android.support.v4.app.Fragment'? – ThomasThiebaud

ответ

1

Вы не используете правильный импорт в de......fragment_nameOfTheFragment

Я думаю, что у вас есть

import android.app.Fragment 

и вам нужно

import android.support.v4.app.Fragment; 

EDIT

@Override 
public Fragment getItem(int position) { 
    Fragment f = null; 
    switch (position) { 
     case 0: 
      f = new fragment_geocache_details_waypoints(); // Here is one fail 
      break; 
     case 1: 
      f = new fragment_geocache_details(); // Here is the other fail 
      break; 
    } 
    return f; 
} 

или

@Override 
public Fragment getItem(int position) { 
    switch (position) { 
     case 0: 
      return new fragment_geocache_details_waypoints(); // Here is one fail 
     case 1: 
      return new fragment_geocache_details(); // Here is the other fail 
     default: 
      //Do something by default like throw an exception 
    } 
} 
+0

Хорошо, спасибо, я решил эту ошибку, спасибо за быстрый ответ, но теперь Android Studio говорит, что оператор возврата отсутствует :( –

+0

См. Edit (функция должна вернуть что-то. Она может быть нулевой, но она должна возвращать Если вы предпочитаете, вы можете добавить оператор 'default' в свой коммутатор). – ThomasThiebaud

+0

ok, Android Studio говорит, что это нормально, но когда я пытаюсь открыть экран с вкладками, приложение вылетает со следующим кодом ошибки на моей консоли: java.lang.NullPointerException: попытаться написать в поле 'android.support.v4.app.FragmentManagerImpl android.support.v4.app.Fragment.mFragmentManager' на ссылку нулевого объекта –