2017-07-20 12 views
1

編集:フラグメント内に関数を追加するには

私はアンドロイドで新しく、私のアプリでフラグメントを使用しようとしています。私は私の活動にフラグメントの機能を使用しようが、私はnullポインタ例外が発生しました。..

フラグメント:私は、例えば(私は私のコードを簡素化)することをやりたい主な活動で

public class VideoviewFragment extends Fragment { 

private View card; 

public static VideoviewFragment create() { 
    return new VideoviewFragment(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_videoview, container, false); 
    card = (View) view.findViewById(R.id.card_video); 
    return view; 
} 

public void setalphacard(float value){ 
    card.setAlpha(value); 
} 

} 

public class MainActivity extends AppCompatActivity { 

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


    // Viewpager 
    final SmartFragmentStatePagerAdapter adapterViewPager; 
    final ViewPager viewPager = (ViewPager) findViewById(R.id.am_view_pager); 
    adapterViewPager = new MainPagerAdapter(getSupportFragmentManager()); 
    viewPager.setAdapter(adapterViewPager); 

    final VideoviewFragment videoviewFragment = (VideoviewFragment) adapterViewPager.getRegisteredFragment(2); 
    videoviewFragment.setalphacard(0.3f); 

} 
} 

メインページャアダプタ:

public class MainPagerAdapter extends SmartFragmentStatePagerAdapter { 


public MainPagerAdapter(FragmentManager fm) { 
    super(fm); 
} 

@Override 
public Fragment getItem(int position) { 

    switch (position){ 

     case 0: 
      return CameraFragment.create(); 
     case 1: 
      return OptionFragment.create(); 
     case 2: 
      return VideoviewFragment.create(); 
    } 

    return null; 
} 

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

フラグメントのグローバルにビューオブジェクト(カード)を宣言する必要があります。 –

答えて

1

あなただけを宣言する必要が世界的にこのような:

public class VideoviewFragment extends Fragment { 

private View card; 

public static VideoviewFragment create() { 
    return new VideoviewFragment(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_videoview, container, false); 
    card = (View) view.findViewById(R.id.card_video); 
    return view; 
} 

public void setalphacard(float value){ 
    card.setAlpha(value); 
} 

} 
+0

ありがとうございます。これを試してみましたが、その機能を使用しようとすると、主なアクティビティでnullポインタが表示されます。 – falary

0

はあなたのフラグメントでグローバルビュー・オブジェクトを宣言します。

関連する問題