当前位置: 首页 > 知识库问答 >
问题:

非静态方法isGooglePlayServicesAvailable,无法从静态上下文引用getErrorDialog

濮阳君浩
2023-03-14

我正在编写此代码,它显示了错误非静态方法googleapiability . isgoogleplayservicesavailable(上下文上下文)和googleapiability . get error dialog(Activity Activity,int errorCode,int requestCode)不能从静态上下文中引用。

package com.xamarin.gcmexample;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.GoogleApiAvailability;
import android.util.Log;
import android.widget.TextView;

public class Main extends AppCompatActivity {
    TextView msgText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        msgText = (TextView) findViewById(R.id.msgText);

    }
    protected void IsPlayServicesAvailable ()
    {
        int resultCode = GoogleApiAvailability.isGooglePlayServicesAvailable(this);
        if (resultCode == ConnectionResult.SUCCESS){
            msgText.setText("isGooglePlayServicesAvailable SUCCESS");

        }else{
            GoogleApiAvailability.getErrorDialog(this, resultCode, 1).show();
        }
    }

}

共有2个答案

夏才
2023-03-14

通过谷歌,这个链接说:静态< code > isGooglePlayServicesAvailable(Context CTX)已弃用,使用非静态< code > isGooglePlayServicesAvailable(Contex CTX)。(还有< code > public static googleapiability getInstance()给你;) )

景唯
2023-03-14

努尔兰已经指出了正确的答案。

替换您的方法

protected void IsPlayServicesAvailable() {
    int resultCode = GoogleApiAvailability.isGooglePlayServicesAvailable(this);

    if (resultCode == ConnectionResult.SUCCESS){
        msgText.setText("isGooglePlayServicesAvailable SUCCESS");
    } else {
        GoogleApiAvailability.getErrorDialog(this, resultCode, 1).show();
    }
}

经过

protected void IsPlayServicesAvailable() {
    int resultCode = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this);

    if (resultCode == ConnectionResult.SUCCESS){
        msgText.setText("isGooglePlayServicesAvailable SUCCESS");
    } else {
        GoogleApiAvailability.getInstance().getErrorDialog(this, resultCode, 1).show();
    }
}
 类似资料:
  • 我正在尝试编写一段代码,当我选中两个复选框中的一个复选框时,它将更改我选择按钮时显示的消息。 我收到的错误消息是: "FirstWindow.java:12:错误:不能从静态上下文消息中引用非静态变量消息="good job\n";" 对于第12、37、53、57行。我已尝试在main中声明字符串变量,但我只会收到错误: “FirstWindow。java:38:错误:从内部类引用的局部变量必须是

  • 问题内容: 我对Java和一般编程非常陌生。我为一个基本程序编写了此代码,以将用户输入的2个数字相加,并将它们加起来并显示在输出框中,但是我得到了,但是我不知道什么是静态的 给出错误的行: 抱歉,如果我非常不称职,但我搜索了一下,但我真不明白该如何解决。谢谢。 问题答案: 在静态上下文中,您没有对象(类的实例),但是实例变量和方法取决于它们。 您有一个名为output1的实例,但是您尝试通过类的名

  • 可能重复: 为什么我得到“非静态变量不能从静态上下文引用”? 这是代码 错误说: 不能从静态上下文引用非静态类节点 为什么我不应该在main()方法中引用Node类?

  • 问题内容: 到目前为止,我有以下代码: } 当我尝试在末尾设置double 时,出现错误消息“无法对非静态方法进行静态引用”。它说解决方法是也使该方法静态化,但是我的教授告诉我不要将该字段静态化。有一个简单的解决方案我只是想念吗? 问题答案: 静态方法属于该类,非静态方法属于该类的 实例 。 当您从呼叫时,您会收到错误消息,因为它与任何实例都没有关联。 您需要创建该类的实例: 然后,您可以调用实例

  • 问题内容: 我想一劳永逸地理解这一点。 为此,请原谅下面粘贴的大量代码,但是我不想遗漏任何细节。 我唯一更改的是加载的URL。但这不会导致错误。 我想将我的函数称为“ readPosiitons ”。简单的解决方案,使其静态。真正的解决方案,我不确定。 请帮助我更好地了解如何以正确的方式解决此错误。 谢谢!! 问题答案: 真正的解决方案?不要在方法中放太多东西。那是给菜鸟的。 Java是一种面向对

  • 所以我尝试绑定我的Numpad键,以便在计算器应用程序中使用它们,但当我尝试从主窗口以字符串形式发送keyEvent时。java到我的MainWindowController公共void方法它给了我一个错误“不能从静态上下文引用非静态方法”,即使我的类都不是静态的?以下是主窗口代码: } 这里是MainWindowController文件(看keyPress方法)