2017-09-20 5 views
0

私はタブ付きのアクティビティに3つのタブを持っています。フラグメントを拡張し、レイアウトを追加した3つのクラスを作成しました。私はそれを実行すると、それは正常に動作します。そこで私はいくつかのEditTextウィジェットとButtonを私の2番目のタブに追加しました。私の質問は次のとおりです。たとえば、そのボタンのonClickListenerを処理するためにJavaコードを置く必要があります。 メインのタブ付きアクティビティクラスでそれをやろうとしましたが、アプリがクラッシュしました。Androidのタブ付きアクティビティとJavaコード?

+0

コードが必要な場合は、Android Studioで新しいプロジェクトを作成し、[空のアクティビティ]ではなく[タブ付きのアクティビティ]を選択します。あなたは完璧なコードを見つけることができ、それから参照することができます。 – zackygaurav

答えて

0

このコードをタブ付きアクティビティの関連するフラグメントに入れることができます。 アクティビティがフラグメント内で膨らんだビューにアクセスできないため、アプリケーションがクラッシュします。もっとこれを確認するためにtutorial

public class PageFragment extends Fragment { 
    public static final String ARG_PAGE = "ARG_PAGE"; 

    private int mPage; 

    public static PageFragment newInstance(int page) { 
     Bundle args = new Bundle(); 
     args.putInt(ARG_PAGE, page); 
     PageFragment fragment = new PageFragment(); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mPage = getArguments().getInt(ARG_PAGE); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_page, container, false); 
     TextView textView = (TextView) view; 
     textView.setText("Fragment #" + mPage); 
     return view; 
    } 
} 

: あなたはこのように行うことができます。

0

それぞれのフラグメント、つまりケースの2番目のタブにボタンクリックコードを追加する必要があります。そのフラグメントをホストするアクティビティにコードを記述しないでください。

+0

しかし、私はあなたの2番目のフラグメント @Override パブリックビューonCreateView(LayoutInflaterのインフレータ、のViewGroupコンテナ、バンドルsavedInstanceState){ 最終ビュービュー= inflater.inflate(R上のこのコードのfindViewById –

+0

メイクの使用を使用することができないJavaファイルで.layout.second_fragment、container、false); \t finalボタンrecyclerView =(Button)view.findViewById(R.id.mybutton); //ボタンクリックコードをここに追加 return view; } –

+0

@slavenフラグメント内でview.findviewbyidを使用する必要があります –

関連する問題