java - 如何获取主类构造函数中的上下文?

标签 java android

我到处寻找,决定在这里写下来。我试图在我的应用程序启动时建立连接。我的问题是我需要将上下文传递给 AsyncTask (或在构造函数中较早创建 ProgressDialog) - 但我也需要上下文。

最重要的事情:我无法将内容从构造函数移动到 onCreate,因为每次我打开应用程序、返回等时,它都会创建一个新的客户端。

问题在于,当构造函数被触发时,我还没有上下文。

有什么想法吗?

已经尝试过这个:StartConnectionTask(this); 但这是同一件事。

发现这个:http://briandolhansky.com/blog/2013/7/11/snippets-android-async-progress 实现了它还是一样。 上下文为空。

public class MainActivity extends AppCompatActivity {
public Client client;
public Button loginButton;
public static String host = "192.168.1.2";
public static int tcp_port = 8888, udp_port = 8889;

@Override
protected void onCreate(Bundle savedInstanceState) {
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu_layout);
}

public MainActivity(){
    client = new Client();
    client.start();
    Network.register(client);
    StartConnectionTask s = new StartConnectionTask(MainActivity.this);
    s.execute();
}

public class StartConnectionTask extends AsyncTask<Void, Void, Boolean> {

    private ProgressDialog conDialog;

    public StartConnectionTask(MainActivity activity) {
        conDialog = new ProgressDialog(activity);
    }
    @Override
    protected void onPreExecute() {
        conDialog.setTitle("Connecting with a server...");
        conDialog.setMessage("Connecting with " + host);
        conDialog.show();
        conDialog.setCancelable(false);
    }

最佳答案

您需要将代码从 MainActivity() 移至 onCreate 末尾。

在 Android 中,传统上 onCreate 是根据 Activity 生命周期启动 Activity 的方法。 您可以通过传递 this

轻松地从这里传递上下文

关于java - 如何获取主类构造函数中的上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33058218/

相关文章:

java - 在不写入文件的情况下从 String 编译 java 源代码

java - BufferedWriter.newLine() 除了最后一行之后

android - 将 MapView 限制为屏幕的一半

Android金鱼内核编译

java - 自动完成固定选择?

java - 我正在学习 Java,以下程序只接受 0 的答案

java - 线程调度和同步

java - 使用 Java 客户端和 JBoss Web 服务实现推送技术

java - 如何使用 phpMyadmin 在 mysql 中发布映射对象

android - 最佳实践讨论 : When to favor a webview over a native UI in titanium?