2014-11-29 3 views
0

Я боролся с этой ошибкой в ​​течение нескольких часов, и я не могу продолжить. Мне нужна ваша помощь здесь!Конструктор в действии не определен

Я пытаюсь заменить свой предыдущий TabNavigation на ActionBar на ViewPager в SDK21, глядя на комментарии в StackOverflow. Я нашел this webpage, где описано использование PagerTabStrip с примером, поэтому я попытался реализовать его в своей деятельности, однако я получаю странную ошибку.

Я попытался решить проблему Google, и все предложения на самом деле не применимы к моей проблеме (неправильные параметры в конструкторе - обычные ошибки). Я также воспроизвел ошибку с помощью простой Activity, чтобы избежать всего, что у меня было в моей предыдущей деятельности, но ошибка сохраняется. Я придаю вы здесь код, который я реплицируются изолированные:

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
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.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

public class TestActivity extends Activity { 

CustomPagerAdapter mCustomPagerAdapter; 
ViewPager mViewPager; 

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

    mCustomPagerAdapter = new CustomPagerAdapter(getFragmentManager(), this.getApplicationContext()); 

    mViewPager = (ViewPager) findViewById(R.id.pager); 
    mViewPager.setAdapter(mCustomPagerAdapter); 
} 

class CustomPagerAdapter extends FragmentPagerAdapter { 

    Context mContext; 

    public CustomPagerAdapter(FragmentManager fm, Context context) { 
     super(fm); 
     mContext = context; 
    } 

    @Override 
    public Fragment getItem(int position) { 

     // Create fragment object 
     Fragment fragment = new DemoFragment(); 

     // Attach some data to the fragment 
     // that we'll use to populate our fragment layouts 
     Bundle args = new Bundle(); 
     args.putInt("page_position", position + 1); 

     // Set the arguments on the fragment 
     // that will be fetched in the 
     // [email protected] 
     fragment.setArguments(args); 

     return fragment; 
    } 

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

    @Override 
    public CharSequence getPageTitle(int position) { 
     return "Page " + (position + 1); 
    } 
} 

class DemoFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // Inflate the layout resource that'll be returned 
     View rootView = inflater.inflate(R.layout.fragment_users, container, false); 

     // Get the arguments that was supplied when 
     // the fragment was instantiated in the 
     // CustomPagerAdapter 
     Bundle args = getArguments(); 
     ((TextView) rootView.findViewById(R.id.text_option)).setText("Page " + args.getInt("page_position")); 

     return rootView; 
    } 
} 
} 

Я получаю в вызове конструктора следующее сообщение об ошибке:

«Конструктор TestActivity.CustomePageAdapter (FragmentManager, контекст) не определен»

в здесь:

mCustomPagerAdapter = new CustomPagerAdapter(getFragmentManager(), this.getApplicationContext()); 

Я попытался ввести адаптер снаружи и внутри определения активности и до сих пор не работает. Скорее всего, это будет что-то простое, но ... Я не вижу этого, и мне нужны другие глаза. Любая идея, что я делаю неправильно?

ответ

1

изменить импорт своей деятельности на:

import android.support.v4.app.FragmentActivity; 

изменить Также конструктор:

mCustomPagerAdapter = new CustomPagerAdapter(getSupportFragmentManager(), this.getApplicationContext()); 
+0

Это работает и дает более четкий ответ. –

1

Причина заключается в том, что Ваша деятельность используется от ADT:

import android.app.Activity; 

и фрагменты используются из пакета поддержки:

import android.support.v4.app.FragmentManager; 

изменения импорт деятельности в:

import android.support.v4.app.FragmentActivity; 
+1

Лично я думаю, что они должны просто удалить, что дублирование штопать из SDK, если кто-то хочет, они могут использовать библиотеку поддержки ... – TacB0sS

+0

Что вы говорите мне это расширить TestActivity из FragmentActivity вместо Activity? Я пробовал это, и я получаю ту же ошибку (я ее реализовал и перезапустил eclipse на всякий случай) –

Смежные вопросы