2014-08-30 1 views
0

У меня есть класс, который расширяет Activity.Android не может использовать контекст к действию

 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(); 

Но когда я пытаюсь бросить контекст деятельности дает исключение

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

Почему это не представляется возможным включить контекст в действие?

Я пробовал много способов, но не нашел, чтобы получить активность в своем классе.

Есть ли способ сделать это ??

ответ

3

Вы отправляете ApplicationContext в класс Game. Просто замените getApplicationContext() на this, чтобы передать Контекст активности. Это будет работать.

Это должно быть new Game(this)

+0

спасибо, он работал для меня :) – Karthik

1

попробовать с

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