从课外显示ProgressDialog

时间:2015-02-20 14:46:58

标签: java android

我希望在外部类的当前活动中显示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的新手,所以这只是猜测。

1 个答案:

答案 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);
}