2013-02-05 37 views
23

我在我的課MainActivity中有錯誤。Android getActivity()未定義

錯誤:The method getActivity() is undefined for the type MainActivity

public class MainActivity extends SherlockFragmentActivity{ 
    PlaceSlidesFragmentAdapter mAdapter; 
    ViewPager mPager; 
    PageIndicator mIndicator; 

    public static final String TAG = "detailsFragment"; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.main, 
       container, false); 

     mAdapter = new PlaceSlidesFragmentAdapter(getActivity() 
       .getSupportFragmentManager()); 

     mPager = (ViewPager) view.findViewById(R.id.pager); 
     mPager.setAdapter(mAdapter); 

     mIndicator = (CirclePageIndicator) view.findViewById(R.id.indicator); 
     mIndicator.setViewPager(mPager); 
     ((CirclePageIndicator) mIndicator).setSnap(true); 

     mIndicator 
       .setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
        @Override 
        public void onPageSelected(int position) { 
         Toast.makeText(MainActivity.this.getActivity(), 
           "Changed to page " + position, 
           Toast.LENGTH_SHORT).show(); 
        } 

        @Override 
        public void onPageScrolled(int position, 
          float positionOffset, int positionOffsetPixels) { 
        } 

        @Override 
        public void onPageScrollStateChanged(int state) { 
        } 
       }); 
     return view; 
    } 
} 
+3

你只需要在片段中使用getActivity()方法來獲取活動類中的上下文使用此關鍵字 –

+0

謝謝@GeorgyGobozov正是我所需要的... – Jeff

回答

33

這是因爲您在內部類中使用了getActivity()。嘗試使用:

SherlockFragmentActivity.this.getActivity()

相反,雖然有真的沒有必要爲getActivity()一部分。在你的情況下, SherlockFragmentActivity .this應該就足夠了。

+0

感謝它解決了我的問題。現在我有其他問題,但是另一個話題。 – Newbie2013

+4

嘿我用你的答案,但我得到了: 沒有封閉的實例類型SherlockFragmentActivity是可訪問的範圍 它是在一個異步的,任何suggetsions? – 2013-07-22 15:56:45

+0

@ user1654206你知道'SherlockFragmentActivity'是類的名字。如果您不確定您的班級名稱,請在導入聲明下檢查文件的頂部 –

25

如果你想打電話給你的活動,只需使用這個。當你在片段中時使用getActivity方法。

6

你想要getActivity()在你的班級裏。最好使用

yourclassname.this.getActivity() 

試試這個。這對你有幫助。