【问题标题】:Calling a dialog activity to the map activity将对话活动调用到地图活动
【发布时间】:2014-01-05 04:29:36
【问题描述】:

我正在开发一个校园地图应用程序。地图活动在主活动上,但是,我对自定义对话框有不同的活动。 我总是得到这个自定义对话框。

实际上我希望它看起来像这样。

我有这个活动的代码

public class AdminActivity extends FragmentActivity{

  public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(AdminActivity.this);
    builder.setTitle(R.string.layers)
           .setItems(R.array.layer_options, new DialogInterface.OnClickListener(){
               public void onClick(DialogInterface dialog, int which) {
               // The 'which' argument contains the index position
               // of the selected item
           }
    });
    return builder.create();
  }

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

    Dialog dialog=onCreateDialog(savedInstanceState);
    dialog.show();
    }
}

这段代码是我要调用对话框的主要活动的一部分。

@Override
public boolean onOptionsItemSelected(MenuItem item){
AdminDialog adminDialog;
  switch(item.getItemId()){
    case R.id.about:
        Intent aboutUs = new Intent("com.android.cmumap.ABOUT");
        startActivity(aboutUs);
        break;
    case R.id.search:

        break;
    case R.id.layers:
        adminDialog= new AdminDialog();
        adminDialog.show(getFragmentManager(), "custom-tag-goes-here");
        break;
  }
  return false;
}

如何实现为我的 AdminActivity 调用地图活动?谢谢。

【问题讨论】:

  • 为我的 AdminActivity 调用地图活动时是否遇到任何错误?
  • 只要我点击显示对话框的按钮,我的程序就会停止..

标签: android google-maps android-intent customdialog


【解决方案1】:

你的类应该继承DialogFragment,而不是FragmentActivity。一定要@OverrideonCreateDialog(...) 方法。您还可以摆脱 onCreate(...) 方法,因为 DialogFragment 不需要这样做。

要显示DialogFragment,而不是像使用Activity 那样使用Intent,请从您的地图活动中执行以下操作。请注意,我重命名了您的课程,因为现在它不是Activity,而是Dialog

adminDialog= new AdminDialog();
adnimDialog.show(getFragmentManager(), "custom-tag-goes-here");

【讨论】:

  • 不,该代码应该放在您想要托管此对话框的任何活动中,这可能是您用来显示地图的活动。当您想显示对话框时,只需使用该代码即可。
  • 我在 custom-tag-goes-here 上放什么?
  • 我这里有一个错误.. new AlertDialog.Builder(AdminActivity.this) 它说它是未定义的..
  • 随心所欲。可以使用标签创建片段,以便以后更容易找到它们。如果您不打算使用该标签,则可以改为传递null
  • 您应该使用getActivity(),而不是使用AdminActivity.this。这就是您获得托管 Fragment 的 Activity 的方式。
【解决方案2】:

感谢内森·沃尔特斯爵士

这是用于自定义对话框的 AdminDialog Activity..

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

public class AdminDialog extends DialogFragment{

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle(R.string.layers)
           .setItems(R.array.layer_options, new DialogInterface.OnClickListener(){
               public void onClick(DialogInterface dialog, int which) {
               // The 'which' argument contains the index position
               // of the selected item
           }
    });
    return builder.create();
}
}

我有这个用于调用对话框的主要活动..

AdminDialog adminDialog;

adminDialog= new AdminDialog();
adminDialog.show(getFragmentManager(), "custom-tag-goes-here");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    相关资源
    最近更新 更多