2017-07-11 31 views
0

這是我需要一個Activity作爲參數的方法。我應該在接收Activity作爲參數的方法中放入什麼?

public View getContentView(Activity ac){ 
      ViewGroup view = (ViewGroup)ac.getWindow().getDecorView(); 
      FrameLayout content = (FrameLayout)view.findViewById(android.R.id.content); 
      return content.getChildAt(0); 
     } 

OneActivity.classOneActivity.this當,它滿足與錯誤: getContentView(android.app.Activity)在MainActivity不能被應用到(java.lang.Class中)。

oneView=getContentView(); 

我的整個代碼:

public class MainActivity extends AppCompatActivity{ 
    private View oneView; 
    private View twoView; 
    private View threeView; 
    private ArrayList<View> views; 
    private ViewPager mViewPager; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.activity_main); 
     views = new ArrayList<View>(); 
     mViewPager = (ViewPager)findViewById(R.id.viewpager_main); 
     initView(); 
     addViews(); 

     PagerAdapter mPagerAdapter = new PagerAdapter() { 

      @Override 
      public boolean isViewFromObject(View arg0, Object arg1) { 
       return arg0 == arg1; 
      } 

      @Override 
      public int getCount() { 
       return views.size(); 
      } 

     }; 

     mViewPager.setAdapter(mPagerAdapter); 
    } 

    /** 
    * convert acitivity to corresponding view 
    */ 
    public void initView(){ 

     oneView=getContentView(OneActivity); 
     twoView=getContentView(TwoActivity); 
     threeView=getContentView(ThreeActivity); 
    } 



    /** 
    * add views into list 
    */ 
    public void addViews(){ 

     views.add(oneView); 
     views.add(twoView); 
     views.add(threeView); 
    } 

    public View getContentView(Activity ac){ 
     ViewGroup view = (ViewGroup)ac.getWindow().getDecorView(); 
     FrameLayout content = (FrameLayout)view.findViewById(android.R.id.content); 
     return content.getChildAt(0); 
    } 

} 

我的想法是使用ViewPager實現側滑切換活動。

在此先感謝!

+0

你能後的代碼的其餘部分? –

+0

嗨,歡迎來到Stack Overflow,請閱讀如何創建[最小,完整和可驗證示例](https://stackoverflow.com/help/mcve),並檢查[如何提出好問題](https:/ /stackoverflow.com/help/how-to-ask),這樣你可以增加獲得反饋和有用答案的機會。 – DarkCygnus

回答

1

它不適用於.class,你需要一個實例。 。這隻有在您從OneActivity中調用它時纔有效。我誠實地質疑爲什麼你需要這樣做 - 如果你在活動本身,有更簡單的方法來做到這一點(在通貨膨脹之後將其保存下來,並在需要時傳遞給它)。如果您不在活動中,那麼您不應該觸摸該活動的觀點。

+0

我想我最好試試別的。無論如何,謝謝 – ErrorPlayer

0

嘗試使用語境,而不是活性

public View getContentView(Context mContext){ 

      // cast mContext to Your Activity 
      ActivityName mActivity = (ActivityName) mContext; 

      // call your desired methods below 
      ViewGroup view = (ViewGroup) mActivity.getWindow().getDecorView(); 
      FrameLayout content = (FrameLayout) view.findViewById(android.R.id.content); 
      return content.getChildAt(0); 

     } 
+0

謝謝,無論如何。 – ErrorPlayer

+0

你最受歡迎。這是否工作? –

+0

不,如果是這樣,你放什麼? – ErrorPlayer

相關問題