2013-10-08 89 views
6

我想從我的片段類調用DialogFragment。我有一個ImageView,並且想要在我設置的ImageView的onClickListener中調用我的DialogFragment類。從片段調用DialogFragment

我在onClick中遇到了一個錯誤,我用設置的代碼嘗試調用DialogFragment。

我收到「show」錯誤,指出「DialogFragment類型中的方法show(FragmentManager,String)不適用於參數(FragmentManager,String)」和「新實例」中的錯誤,聲明「The方法的newInstance()是未定義的類型MyDialogFragment」

這裏是我的代碼:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) 
{ 
    final View v = inflater.inflate(R.layout.image_detail_fragment, 
     container, false); 

    mImageView = (RecyclingImageView) v.findViewById(R.id.imageView); 
    mImageView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      //Here 
      MyDialogFragment dialog = MyDialogFragment.newInstance(); 
      dialog.show(getFragmentManager(), "fragmentDialog"); 
     } 
    }); 

    return v; 
} 

DialogFragment類:

import android.app.AlertDialog; 
import android.app.Dialog; 
import android.app.DialogFragment; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.os.Bundle; 

class MyDialogFragment extends DialogFragment { 

    Context mContext; 

    public MyDialogFragment() { 
     mContext = getActivity(); 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mContext); 
     alertDialogBuilder.setTitle("Set Wallpaper?"); 
     alertDialogBuilder.setMessage("Are you sure?"); 
     //null should be your on click listener 
     alertDialogBuilder.setPositiveButton("OK", null); 
     alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.dismiss(); 
      } 
     }); 

     return alertDialogBuilder.create(); 
    } 

    public static MyDialogFragment newInstance() { 
     MyDialogFragment = new MyDialogFragment; 
     return f; 
    } 
} 
+1

請添加logcat。 – Aleksandr

+1

我不能看到你的靜態方法MyDialogFragment.newInstance() – Aleksandr

回答

6

你d o沒有名稱爲newInstance的靜態方法。在對話框片段添加以下

public static MyDialogFragment newInstance() { 
    MyDialogFragment f = new MyDialogFragment(); 
    return f; 
    } 

你可以找到更多信息,並在文檔的例子

http://developer.android.com/reference/android/app/DialogFragment.html

+0

我得到的「MyDialogFragment」說「MyDialogFragment不能被解析爲一個變量」和「f不能被解析爲一個變量」的eror。我已更新我的代碼,以便您可以看到它的樣子。 – Jack

+2

注意! 公共靜態MyDialogFragment的newInstance(){ MyDialogFragment F =新MyDialogFragment(); return f; } – Aleksandr

+0

@Aleksandr謝了糾正它。錯字錯誤。 – Raghunandan

0

而且你也可以撥打MyDialogFragment沒有newInstance方法類似

DialogFragment newFragment = new MyDialogFragment(this); 
newFragment.show(getFragmentManager(), "date_picker"); 
相關問題