我有一个扩展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。
有没有办法做到这一点??
答案 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);
}
}