2016-05-21 8 views
-1

AlertDialogをフラグメントに構築しようとしましたが、AlertDialog Builderの適切なコンテキストが見つかりませんでした。この行にフラグメント内のAndroid AlertDialog Builder getActivity()が機能しない

public class LoginFragment extends Fragment { 
public LoginFragment() { 
    // Required empty public constructor 
} 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

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

    Button btnEnter = (Button) rootView.findViewById(R.id.btnEnter); 

    // Listening to register new account link 
    btnEnter.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

     // if play name already exists 
      AlertDialog dialog = new AlertDialog.Builder(getActivity()) 
       .setCancelable(false) 
       .setIcon(R.drawable.login_icon) 
       .setMessage("Player Name Already Exists. Please Find a New Name.") 
       .setButton("Okay", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.dismiss(); 
        } 
      }).show(); 
     } 
    }); 

    return rootView; 
} 

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
} 

@Override 
public void onDetach() { 
    super.onDetach(); 
} 

}

AlertDialog dialog = new AlertDialog.Builder(getActivity()); 

getActivity()動作していませんでした。それは "AlertDialog、見つかりましたAlertDialog.Builder"が必要です。私はthis.getActivity()とgetContext()とgetSupportFragmentManager()のようなものを試しました。私はこれについて少し混乱しています。誰かが私が使用するべき理由とその理由を教えてもらえますか?

答えて

1

AlertDialog dialog = new AlertDialog.Builder(getActivity());

これはちょうどあなたが好きなように編集ので、カスタムダイアログで

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

+0

ありがとうございます!それは愚かな間違いのようだった.... – Emile

0

に置き換える必要があります。断片内のダイアログを使用するための

例:

AlertDialog.Builder makeDialog = new AlertDialog.Builder(getActivity()); 
      LayoutInflater li = getLayoutInflater(null); 
      View viewAdd = li.inflate(R.layout.random_dialog, null); 
      makeDialog.setView(viewAdd); 

      //editexts,textviews and that stuff goes here 

      makeDialog.setPositiveButton("Save", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 




       } 
      }); 

      makeDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.cancel(); 
       } 
      }); 

      AlertDialog ad = makeDialog.create(); 
      ad.show(); 
関連する問題