我希望在外部类的当前活动中显示ProgressDialog,而不是将变量传递到外部类或使用静态变量,如其他已回答的问题。可能吗?这是一些简单的测试代码,可能有助于说明我想要做的事情:
MainActivity.java
package com.example.test;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.example.test.test2;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void buttonPressed( View view) {
test2 T2;
T2 = new test2();
Log.d("button", "pressed");
T2.change();
}
}
和test2.java
package com.example.test;
import android.app.ProgressDialog;
public class test2 {
ProgressDialog mDialog;
public void change() {
mDialog = new ProgressDialog(this);
mDialog.setMessage("Testing");
mDialog.setCancelable(true);
mDialog.show();
}
}
按下按钮时,将调用funtion buttonPressed,调用test2类以在主活动上显示ProgressDialog。
我认为这一切都依赖于mDialog = new ProgressDialog(this);
中的上下文,就像某种程度上它需要被告知当前的活动一样?但我是Java的新手,所以这只是猜测。
答案 0 :(得分:1)
一种可能的解决方案是更改将当前Activity作为参数从Test2传递的方法:
public void change(Context context) {
mDialog = new ProgressDialog(context);
mDialog.setMessage("Testing");
mDialog.setCancelable(true);
mDialog.show();
}
然后在MainActivity类中执行以下调用:
public void buttonPressed( View view) {
test2 T2;
T2 = new test2();
Log.d("button", "pressed");
T2.change(this);
}