Android无法将Context转换为Activity

时间:2014-08-30 22:21:31

标签: android android-activity android-context

我有一个扩展Activity的类。

      public class MyActivity extends Activity{

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.id,someactivitylayout);
                  new  Game(getApplicationContext());

       }

我的游戏课程看起来像

         public class Game{
             Game(final Context context){
                 cell.setOnClickListener(new View.OnClickListener() {
                       @Override
                       public void onClick(View v) {

                       /* here i need to call runOnUIThread*/
                      }
              } 
         }

我的代码没有任何语法错误,所以它编译得很好。

在我必须调用runOnUIThread的地方,我试过

              Thread t = new Thread() {
                        public void run() {
                        while (progressBar.getProgress() < 100) {
                               ((Activity) context).runOnUiThread(new unnable() {
                                                public void run() {

                                                }
                                            });
                                      }
                                };
                                t.start();

但是当我尝试将上下文转换为Activity时,它会给出异常

    java.lang.ClassCastException: android.app.Application cannot be cast to android.app.Activity

为什么无法将上下文转换为Activity?

我尝试了很多方法,但无论如何都没有找到我的游戏类中的Activity。

有没有办法做到这一点??

2 个答案:

答案 0 :(得分:3)

您正在将GameContext发送到Game类。只需将getApplicationContext()替换为this即可传递活动上下文。它会起作用。

应为new Game(this)

答案 1 :(得分:1)

尝试

public class MyActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.id,someactivitylayout);
        new Game(this);
    }
}