2016-07-31 4 views
0

オーバーレイ画面を表示するためにFrameLayoutを使用しました。 RelativeLayoutをインスタンス化している間、findViewByIdはnullを返します。view.findViewById()はnullを返します

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     /> 
    <me.relex.circleindicator.CircleIndicator 
     android:id="@+id/indicator" 
     android:layout_width="match_parent" 
     android:layout_height="48dp" 
     android:layout_marginBottom="48dp" 
     android:layout_gravity="bottom" 
     app:ci_drawable="@drawable/orange_radius" 
     app:ci_drawable_unselected="@drawable/white_radius"/> 

</RelativeLayout> 

<!--Below is the transparent layout positioned at startup --> 
<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#70000000" 
    android:id="@+id/topLayout"> 

    <ImageView 
     android:id="@+id/ivInstruction" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:paddingTop="25dp" 
     android:layout_marginRight="15dp" 
     android:clickable="false" 
     android:paddingLeft="20dip" 
     android:scaleType="center" 
     android:src="@drawable/home" /> 

</RelativeLayout> 

フラグメントコード:ここで はxmlファイルある

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     mView = getActivity().getLayoutInflater().inflate(R.layout.our_work_layout, null); 

     topLayout = (RelativeLayout) mView.findViewById(R.id.topLayout); 


    if (isFirstTime()) { 
     topLayout.setVisibility(View.INVISIBLE); 
    } 

    ViewPager viewpager = (ViewPager) mView.findViewById(R.id.viewpager); 
    // mPager.setAdapter(mAdapter); 

    ImageAdapter adapter = new ImageAdapter(act); 
    viewpager.setAdapter(adapter); 


    CircleIndicator indicator = (CircleIndicator) mView.findViewById(R.id.indicator);; 
    indicator.setViewPager(viewpager); 
    return mView; 
} 

private boolean isFirstTime() 
{ 
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext()); 
    boolean ranBefore = preferences.getBoolean("RanBefore", false); 
    if (!ranBefore) { 

     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putBoolean("RanBefore", true); 
     editor.commit(); 
     topLayout.setVisibility(View.VISIBLE); 
     topLayout.setOnTouchListener(new View.OnTouchListener(){ 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       topLayout.setVisibility(View.INVISIBLE); 
       return false; 
      } 

     }); 


    } 
    return ranBefore; 

} 
+0

アンドロイド:ID = "@ + ID/topLayoutは、" 第二のRelativeLayout、でframeLayoutの子ビューにあります。 – musica

+0

エラーログが表示されますか? – pRaNaY

答えて

1

あなたの問題はここにある:

ViewPager viewpager = (ViewPager) mView.findViewById(R.id.viewpager); 

ない "viewpager" はありませんにこのレイアウト。 id "pager"を使用しました。

を次のようにこの行を修正:

ViewPager viewpager = (ViewPager) mView.findViewById(R.id.pager); 
+0

指摘していただきありがとうございます、それは非常に愚かでした。実際に私は間違ったレイアウトを膨らませた。 – musica

関連する問題