现在程序正常,
此程序可以打开/关闭wifi
现在我想把这个函数放到库中,并简化活动类中的代码
public class MyActivity extends Activity {
private WifiManager wifiManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
Button bWifi = (Button) findViewById(R.id.button);
bWifi.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View view) {
if (!wifiManager.isWifiEnabled())
{
wifiManager.setWifiEnabled(true);
}
else
{
wifiManager.setWifiEnabled(false);
}
Toast.makeText(getApplicationContext(), "Toggle wifi", Toast.LENGTH_LONG).show();
}
});
}
}
然后我改为这个。更改后,我无法运行应用程序,如何在其他类中调用android函数?
public class MyActivity extends Activity {
Setting setting=new Setting();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button bWifi = (Button) findViewById(R.id.button);
bWifi.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View view) {
setting.toggleWifi();
}
});
}
设置课程:
public class Setting extends Activity {
private WifiManager wifiManager;
public Setting()
{
wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
}
public void toggleWifi()
{
if (!wifiManager.isWifiEnabled())
{
wifiManager.setWifiEnabled(true);
}
else
{
wifiManager.setWifiEnabled(false);
}
Toast.makeText(getApplicationContext(), "Toggle Wifi", Toast.LENGTH_LONG).show();
}
}
这是第二个版本,在此版本中,只有一个活动。它可以准确地向您显示问题。如果我删除此行
,此版本仍无效 wifiManager = (WifiManager) (this.activity.getSystemService(Context.WIFI_SERVICE));
该应用程序将有效。
public class MyActivity extends Activity {
Setting setting=new Setting(this);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button bWifi = (Button) findViewById(R.id.button);
bWifi.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View view) {
}
});
}
}
public class Setting {
private WifiManager wifiManager;
private Activity activity;
public Setting(Activity activity)
{
this.activity=activity;
wifiManager = (WifiManager) (this.activity.getSystemService(Context.WIFI_SERVICE));
}
}
答案 0 :(得分:1)
为什么你的助手类设置扩展活动?我相信你这样做只是为了得到Context
的一个实例,以便你可以拨打getSystemService()
。 Activity是一个具有自己生命周期的UI组件。你不应该将它用作实用程序/助手类。
您可以从Activity
将上下文传递给设置对象,而不是创建活动,并使用该上下文调用getSystemService()。
public void toggleWifi(Context mContext)
{ WifiManager wifiManager = = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
if (!wifiManager.isWifiEnabled())
{
wifiManager.setWifiEnabled(true);
}
else
{
wifiManager.setWifiEnabled(false);
}
Toast.makeText(getApplicationContext(), "Toggle Wifi", Toast.LENGTH_LONG).show();
}
现在,您可以从Activity
setting.toggleWifi(MyActivity.this);
注意:当您将Context传递给帮助程序类时,请确保不要超过所需的时间。或者为了使其简单,不要持有比Context更长的Context。