gpt4 book ai didi

java - 如何从第二个 .java 类文件获取 getSystemService 以在 Android Studio 中工作?

转载 作者:行者123 更新时间:2023-12-01 18:00:34 31 4
gpt4 key购买 nike

我很抱歉。我知道有很多像这样的重复问题,但即使在这里阅读完这些问题后,我也无法让我的问题正常工作或正确理解答案。由于需要重复点,我无法评论另一篇文章来帮助解释答案。

<小时/>

所以我在 JavaScript 方面非常有经验,但在 Java 和学习方面我仍然是一个初学者。我在 BlueJ 上进行了一些 Java 练习不久前。

最近我开始使用 Android Studio 开发一个应用程序在Building Your First App的帮助下指南,我毫无问题地遵循、学习和理解。

现在我正在开发自己的应用程序。当我尝试在 https://stackoverflow.com/a/3496655/6318164 的帮助下将找到的代码 fragment 存储在第二个 .java 文件中来整理它们时,我不断遇到问题。回答。

我尽力缩短代码以在此处显示。

Net.java

package com.nova.netmanager;

import android.content.Context;
import android.net.wifi.WifiManager;

class Net {
public boolean isWifiEnabled() {
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
return wifi.isWifiEnabled();
}
}

MainActivity.java

package com.nova.netmanager;

import android.content.Context;
import android.net.wifi.WifiManager;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.Switch;

public class MainActivity extends AppCompatActivity {
Switch wifiSwitch;
WifiManager wifi;

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

wifiSwitch = (Switch) findViewById(R.id.switch_wifi);
wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
checkNetworkStatus();

wifiSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
wifi.setWifiEnabled(isChecked);
}
});
}

@Override
protected void onResume() {
super.onResume();

checkNetworkStatus();
}

public void checkNetworkStatus() {
Net net = new Net();
wifiSwitch.setChecked(net.isWifiEnabled());
}
}

Net.java 是我自己的类,我试图将所有通信和网络内容存储在一起,例如检查状态和切换它们。现在,我的应用程序不断崩溃,调试器在缩小范围后不断提示 Net.java 中的这一行。

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

我尝试将extends AppCompatActivity添加到class Net,但提出了问题,说它应该在onCreate之后运行,从我看到的脚本流逻辑来看它是这样做的。我什至尝试过类中不存在的 getActivity() ,并且我尝试使用其他答案中的这个 Context

WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

我不明白为什么在第二个脚本中询问 Android WiFi 是否打开或关闭如此困难。我想我已经读过,即使以前没有人编码过,Android Studio 也应该很容易。

如有任何帮助,我们将不胜感激。很抱歉这篇文章很长并且可能有重复。

最佳答案

您需要传递如下上下文

class Net { 
public boolean isWifiEnabled(Context context) {
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
return wifi.isWifiEnabled();
}
}

并在您的 Activity 中使用它:-

public class MainActivity extends AppCompatActivity { 
Switch wifiSwitch;
WifiManager wifi;

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

wifiSwitch = (Switch) findViewById(R.id.switch_wifi);
wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
checkNetworkStatus();

wifiSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
wifi.setWifiEnabled(isChecked);
}
});
}

@Override
protected void onResume() {
super.onResume();

checkNetworkStatus();
}

public void checkNetworkStatus() {
Net net = new Net();
wifiSwitch.setChecked(net.isWifiEnabled(MainActivity.this));
}
}

编辑:您还需要在AndroidManifest文件中添加以下权限

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

关于java - 如何从第二个 .java 类文件获取 getSystemService 以在 Android Studio 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41309763/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com