0

ユーザーがアクティビティの FRAGMENT 内のボタンをクリックしたときに、ポップアップ コンテキスト ヘルプが必要です。を使用してこのアクションを実行しようとしましたToastが、無駄でした。ポップアップ ダイアログ ボックスは表示されません (フラグメント内で Toast を使用するの推奨事項が役に立たなかったことにも注意してください)。

フラグメント クラスの私のコードを以下に記述します。

            final Button help = (Button) view.findViewById(R.id.help_button);
        del.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v) {
            Context context = (TabsActivity) getActivity().getApplicationContext();
            CharSequence text = "Hello toast!";
            int duration = Toast.LENGTH_LONG;
            Toast toast = Toast.makeText(view.getContext(), text, duration);
            toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
            toast.show();
            }
        });

のいくつかのバリエーションを試しCONTEXTましたが、そのうちの 2 つがコードに示されています。、も試しましたgetActivity()getView().getContext()getContext()すべて無駄でした。フラグメントに CONTEXT を設定する方法を理解していただけますか?

4

4 に答える 4

5

再びビューから外すのではなく、アプリケーションコンテキストを使用します。

        Context context = getActivity().getApplicationContext();
        Toast.makeText(context, "Hello toast!", Toast.LENGTH_LONG).show();

シンプルに保ち、そこから作業を進めてください。そうすれば、どのビットが実際にエラーを引き起こしているのかを把握できます。

コードにログインすると、Toastに依存する代わりに、onClickリスナーが実際に使用されるタイミングを判断できます。

 setOnClickListener(new View.OnClickListener(){
     @Override
     public void onClick(View v) {
          Log.d("MyTag", "Button 1 was pressed");
     }
 }
于 2012-12-26T15:33:10.720 に答える
4

単に getActivity() を使用してください。キャストやアプリケーション コンテキストの取得も必要ありません。

私が使うToast.makeText(getActivity(), "Simple Toast",1000).show();

そしてそれは私のために働きます。

于 2012-12-26T15:33:41.427 に答える
1

あなたのコードで:

        final Button help = (Button) view.findViewById(R.id.help_button);
        del.setOnClickListener(new View.OnClickListener(){

読むべきではありません(ヘルプがこのonclickリスナーを取得していることに注意してください):

        final Button help = (Button) view.findViewById(R.id.help_button);
        help.setOnClickListener(new View.OnClickListener(){
于 2012-12-26T15:33:03.917 に答える
1

これを試して、

Toast toast = Toast.makeText(getActivity().getApplicationContext(), "text", 100);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.show();
于 2012-12-26T15:36:09.480 に答える