gpt4 book ai didi

android - 无法访问类型为 ContactsXmpp 的封闭实例?

转载 作者:行者123 更新时间:2023-11-29 18:04:30 25 4
gpt4 key购买 nike

这是我正在使用的类

public class ContactsXmpp extends SherlockFragmentActivity {

private static Context ctx;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contacts_xmpp_sip);

ctx = this;
}

当我从这个方法调用 asynctask 时出现错误。这是错误无法访问类型为 ContactsXmpp 的封闭实例。必须使用类型为 ContactsXmpp 的封闭实例(例如 x.new A(),其中 x 是 ContactsXmpp 的实例)限定分配。

private static void alert( String str, final String name ) {

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctx);
alertDialogBuilder.setMessage(str + ": " + name);
alertDialogBuilder.setCancelable(false)
.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
Subscription(name);
new ColorsXMPP_AfterLogin().execute(); ///** error getting here..
}
});

alertDialogBuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
unSubscribe(name);
}
});

AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}

这里是异步任务

public class ColorsXMPP_AfterLogin extends AsyncTask<AfterLogging, Void, Void> {

private ProgressDialog _dialog;

@Override
protected void onPreExecute() {
super.onPreExecute();
Log.e(TAG, " GmailXMPP_AfterLogin onPreExecute" );
}

@Override
protected void onPostExecute(Void feed) {
//ProgressBar_hide();
_dialog.dismiss();
Log.e(TAG, " GmailXMPP_AfterLogin onPostExecute" );
}

@Override
protected Void doInBackground(AfterLogging... arg0) {

Log.e(TAG, " GmailXMPP_AfterLogin doInBackground" );

return null;
}
}

最佳答案

您不能在 alertstatic 方法中实例化 ColorsXMPP_AfterLogin 类(我假设两者都在 ContactsXmpp Activity )。问题是 ColorsXMPP_AfterLogin 被声明为一个内部类,并且内部类需要创建一个封闭类的实例(它们需要此连接)。在静态 alert 方法中,您没有此实例,因此编译器会抛出该错误。您有几种解决问题的方法,我推荐的方法是将 ColorsXMPP_AfterLogin 作为 ContactsXmpp 中的嵌套类(声明为 public static class ColorsXMPP_AfterLogin. ..) 或将其完全移动到它自己的 java 文件中(如果您需要连接到 ActivityContext 只需传递对该 ctxAsyncTask 的构造函数中)。

您还可以使用 ctx 变量创建 ColorsXMPP_AfterLogin 的实例,例如:

ctx.new ColorsXMPP_AfterLogin();

关于android - 无法访问类型为 ContactsXmpp 的封闭实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14107999/

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