【发布时间】:2014-06-14 16:40:25
【问题描述】:
现在程序运行正常,
这个程序可以打开/关闭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));
}
}
【问题讨论】:
-
为什么你的应用中的设置是一个活动?任何时候只有 1 个活动在前台运行。我认为您需要回到 Android 文档并准确了解 Activity 是什么,而不是尝试选择基类以便您的代码能够编译。
-
使用
new Setting()创建 Activity 是不合法的。 Activity 生命周期必须由 Android 框架管理:您永远不能使用new关键字创建它们。
标签: android sdk android-activity