java - 匿名类中的 Activity 名称是什么

标签 java android android-studio anonymous-class

您好,我是 android 新手,我对 Activity 上下文中的此关键字感到困惑。这是一个代码 fragment ,当按下按钮时,它会简单地打印到屏幕上。但工作室提出了一个问题。

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.d("My app","onCreate is called");
    Toast1("onCreate");
    Button btn=(Button)findViewById(R.id.button);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d("My app","Button is pressed");
            Toast.makeText(this,"Button pressed",Toast.LENGTH_SHORT).show();//Here is a error
        }
    });
}

如何知道 this 关键字引用的是哪个 Activity 或类?

最佳答案

在匿名类中,this指的是匿名类的 block 。要引用包含匿名类的 Activity 类,您需要在 this 关键字

之前附加类名和 .
ActivityClassName.this

Toast 要么需要要显示它的 Activity 的上下文,要么需要应用程序的上下文

使用 Activity 上下文进行 Toast

Toast.makeText(Activityname.this,"Button pressed",Toast.LENGTH_SHORT).show();

注意:如果您的 Toast 位于任何匿名类中,则需要使用 ActivityName.this。如果不是这种情况,只需使用 this 即可完成工作。

使用应用程序上下文进行 Toast

Toast.makeText(getApplicationContext(),"Button pressed",Toast.LENGTH_SHORT).show();

关于java - 匿名类中的 Activity 名称是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47968870/

相关文章:

java - 尝试进行归并排序,但索引超出范围

java - 与 Java 的断言不同,Groovy 的断言对于生产代码来说是一个好主意吗?

java - 找不到 DDMS 文件 Android\platform-tools\adb.exe

android - 为什么在 Google Analytics for Android 应用程序中手动而不是自动屏幕测量时不显示实时报告?

java - 如何从android中的静态方法调用非静态方法

java - Josso 应用服务器从 Spring 2.5 升级到 Spring 3.0.5

java - 通过 HttpURLConnection 的 JSON POST 数据

android studio 没有启动 java.lang.NoSuchMethodError

Java 构建错误,没有来源或位置

java - Android Studio 构建错误提示 JVM 版本