0

我在活动上显示 DialogFragment 时遇到问题。我发现了很多关于这个问题的其他帖子,但我找不到解决方案。

这是我的活动:

public class MainActivity extends FragmentActivity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      // check whether data connection is available
      ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
      NetworkInfo netInfo = cm.getActiveNetworkInfo();
      if (netInfo == null || !netInfo.isConnectedOrConnecting()) {

         DataConnectionUnavailableDialog dialog = DataConnectionUnavailableDialog
               .newInstance("R.string.connection_unavailable");
         dialog.show(getFragmentManager(), "");
      }
   < other stuff >
   }
< other stuff >
}

如您所见,我想在 Internet 连接不可用时显示一个对话框。

这是我的对话。

public class DataConnectionUnavailableDialog extends DialogFragment {

   static DataConnectionUnavailableDialog newInstance(String title) {
      DataConnectionUnavailableDialog f = new DataConnectionUnavailableDialog();
      Bundle args = new Bundle();
      args.putString("title", title);
      f.setArguments(args);
      return f;
   }

   @Override
   public Dialog onCreateDialog(Bundle savedInstanceState) {
      // Use the Builder class for convenient dialog construction
      AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
      builder.setMessage(R.string.connection_unavailable).setPositiveButton(
            R.string.open_connection, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                  try {
                     < ... >
              } catch (Exception e) {
                 throw new RuntimeException(e.toString());
              }
           }
        }).setNegativeButton(R.string.cancel,
        new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
              finish();
           }
        });
      // Create the AlertDialog object and return it
      return builder.create();
   }   
}

奇怪的是,几个月前,对话框出现了。然后我离开了这个项目,当我回到它时,经过一些其他的修改,我发现了这个问题。

我使用的是 4.0.3 Android。

4

0 回答 0