【问题标题】:Passing context from MainActivity to other Class for System services将上下文从 MainActivity 传递给系统服务的其他类
【发布时间】:2018-01-27 11:11:08
【问题描述】:

我想稍微清理一下我的 Main 活动类并将一些代码转移到其他类,以使我的代码更易于阅读。 我遇到了这样的情况

MainActivity 类

public class MainActivity extends AppCompatActivity { 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        getData("2B1A4D3C");
     }
    public void getData(String Hex) {
        Static staticClass = new Static();
           if (staticClass.isNetworkAvailable(MainActivity.this) == true) {
                  staticClass.setData(response);
           }
    }
}

二等

class Static extends AppCompatActivity {
    public boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivityManager = (ConnectivityManager) 
            getSystemService(context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = 
            connectivityManager.getActiveNetworkInfo();
    if ( activeNetworkInfo != null ) {
        return true;
    } else {
        return false;
    }
}

当我像这样传递上下文时 -> isNetworkAvailable(MainActivity.this) 我遇到了崩溃。并得到一个错误

系统服务在onCreate()之前对Activity不可用

什么是传递上下文的正确方法?

【问题讨论】:

  • onCreate 必须在静态类中调用,然后才能调用连接管理器。不要扩展 AppCompatActivity,而是使用上下文实例

标签: java android service system android-context


【解决方案1】:

你需要使用:

    ConnectivityManager connectivityManager = (ConnectivityManager) 
        context.getSystemService(context.CONNECTIVITY_SERVICE);

否则该调用实际上是Static.this.getSystemService(...),并且由于Static 实例是由您而非系统创建的,因此它不是有效的Context

但在这种情况下,我看不出有任何理由让 Static 类扩展 AppCompatActivity,所以你应该删除它。

【讨论】:

  • 谢谢,这解释了我需要的一切。
  • @ekavet 我很高兴能帮上忙。祝你好运。
【解决方案2】:

您收到错误是因为您将静态类设置为没有 onCreate 方法的活动。而不是让它成为一个简单的 Java 类,并通过函数参数将上下文传递给 isNetworkAvailable 方法。

【讨论】:

    猜你喜欢
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 2019-04-20
    相关资源
    最近更新 更多