2016-12-06 5 views
0

私はタブ操作を持っています。 タブの1つには、フラグメントアイテムを含むlistViewが含まれています。 私はこれらのリスト項目(フラグメント)上にボタンを持っており、ポップアップウィンドウを表示するにはそのボタンをクリックしてください。 不幸にも私はポップアップを見ることができます。リスト項目の表示が小さすぎるためです。 私は実際には、リストを含むアクティビティでそれを見たいと思います。親フラグメントのポップアップウィンドウを表示

アイデア?

編集: ダイアログ:

パブリッククラスCancelRunPupUpがDialogFragment {

@NonNull 
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setTitle(getResources().getString(R.string.cancelRunTitle)) 
      .setMessage(getResources().getString(R.string.AreYouSure)) 
      .setPositiveButton(getResources().getString(R.string.yes), new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 

       } 
      }) 
      .setNegativeButton(getResources().getString(R.string.no), new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 

     } 
    }); 

    AlertDialog dialog = builder.create(); 
    dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
    return dialog; 
} 

}

このダイアログを呼び出すボタンを拡張:

@OverrideパブリックビューonCreateView(LayoutInflater用インフレータ、のViewGroup容器、 バンドルsavedInstanceState){

// Inflate the layout for this fragment 

    view = inflater.inflate(R.layout.fragment_row_in_home_tab, container, false); 

    ImageButton cancelRun = (ImageButton) view.findViewById(R.id.cancelRunButton); 

    cancelRun.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      CancelRunPupUp dialog = new CancelRunPupUp(); 
      dialog.show(getFragmentManager(), "cancelRunDialog"); 
     } 
    }); 
    return view; 
} 

RowInHomeTabがtabActivityに配置されているリストビュー内の項目である:パブリッククラスRowInHomeTabで

フラグメント延び。ウィンドウをポップアップする

答えて

0

このダイアログ断片....

   DFragment dFragment = new DFragment(); 
      // Show DialogFragment 
      dFragment.show(fm, "Dialog Fragment"); 
+0

私もそれを使ってみましたが、しかし、アイテムリストのボタンをクリックしても、ダイアログは表示されません。 –

+0

さんはあなたのonClickListnerコードを共有しています.... –

+0

このボタンの存在場所を教えてください。リストビューでアイテムとして、またはリストビューのサブアイテムとして...あなたがボタンを膨らませているレイアウトはそこに定義されていますか? –

0

はアル少し「特大」かもしれないが、あなたがシステムアラートを使用することができます。

alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 

しかし、これは

が必要です
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 

編集: OK、すでにタイプをSYSTEM_ALERTに設定しているようですが、あなたのダイアログを表示させたいアクティビティのコンテキストを保存し、ダイアログクラスでgetActivity()の代わりにこのグローバル変数を使用します。 しかし、これは...リストビューを含む活動が必要 非常に粘着性である:

public static Context main_ctx; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    main_ctx = this; 
    [...] 

そして、あなたのダイアログフラグメント:

public Dialog onCreateDialog(Bundle savedInstanceState) { 

    AlertDialog.Builder builder = new AlertDialog.Builder([YOUR CLASS NAME].main_ctx); 

編集:

最終

を試してみてください
getActivity().runOnUiThread(new Runnable() { 
      public void run() { 
       CancelRunPupUp dialog = new CancelRunPupUp(); 
       dialog.show(getFragmentManager(), "cancelRunDialog"); 
      } 
     }); 
+0

alert.getWindow()。setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);を配置する場所を具体的に指定できますか。それはどうしますか? –

+0

私はAlertDialogを使用していると思っていましたが、そうでない場合は、CancelRunPopupクラスのコードを提供してください – 2red13

+0

です。私はそれを加えました。 –

関連する問題