我是Android开发的新手,并设法在StackOverflow上获取这个远远的阅读问题和答案。谢谢大家。
我想出了一个我无法弄清楚的问题。我看到过类似的问题,但答案对我来说并不清楚。请帮帮我。
我想从另一个类调用我的主要活动的方法。当我尝试调用该方法时,应用程序崩溃了。这是代码:
在课程文件中:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MainActivity MainActivity = new MainActivity();
MainActivity.ligaInternet();
}
}
在主要活动文件中:
protected void ligaInternet() {
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
String urlText="http://www.regiprof.com/regiprof_sms.php";
String stringUrl = urlText.toString();
new DownloadWebpageTask().execute(stringUrl);
}
}
如何调用ligaInternet()
函数?
答案 0 :(得分:1)
你可以尝试
MainActivity currentActivity = ((MainActivity)context.getApplicationContext()).getCurrentActivity();
currentActivity.ligaInternet();
答案 1 :(得分:0)
试试这个。 Dude,使ligaInternet方法静态,只能从类名引用静态方法。声明MainActivity.ligaInternet()现在不正确,因为ligaInternet()是非静态方法,因此无法从类名引用它。并从方法中删除protected关键字。
答案 2 :(得分:0)
可能的方法。将以下内容放入广播接收器中。
Intent intent2open = new Intent(context, MainActivity.class)
现在在MainActivity中创建一个新方法如下:
public void onNewIntent (Intent intent) {
ligaInternet();
// This simply calls the function.
//so make sure the function is
//written somewhere inside
//MainActivity as well.
}