1

关于对话框的 android 文档提供了一个关于AlertDialogs. 立即使用代码时,我在 Eclipse 上遇到错误getActivity()。为什么这不起作用?错误:The method getActivity() is undefined for the type MainActivity对于那些试图通读文档以成为一个整体上更好的程序员的人来说,这尤其令人困惑,但似乎我并没有把点连接起来。谢谢。

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

    }
}
4

3 回答 3

2

正如医生所说:

getActivity (Context con, int reqCode, Intent intent, int flags)

检索将启动新活动的 PendingIntent,例如调用 Context.startActivity(Intent)。请注意,该活动将在现有活动的上下文之外启动,因此您必须在 Intent 中使用 Intent.FLAG_ACTIVITY_NEW_TASK 启动标志。

以及关于

[public AlertDialog.Builder (Context context)][2]

Constructor using a context for this builder and the AlertDialog it creates. 

表示AlertDialog.Builder 构造函数需要一个 Context 实例而不是 PendingIntent

将您的代码更改为:

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

编辑 :

作为您提供的链接

http://developer.android.com/guide/topics/ui/dialogs.html

在这个示例中,作者讨论了我们如何AlertDialogDialogFragment.we 中显示,当在它getActivity()内部使用时,DialogFragment它会返回一个该片段当前关联的 Activity。间接表示getActivity()返回一个 Context 实例

于 2012-12-10T23:46:37.857 回答
1

您没有针对正确的 api 构建。该方法getActivity()在以前的 API 中不可用。你总是可以去

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

或者从内部类调用时,使用

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
于 2012-12-10T23:43:50.673 回答
0

利用

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

反而

于 2012-12-10T23:44:25.000 回答