0

我的应用程序中有三个课程。首先扩展 Activity

public class TestProjActivity extends Activity {
/** Called when the activity is first created. */
String my ="";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    new Thread(new Runnable() {
        public void run() {
            Translation th = new Translation(this);
            my = th.doSomeJob();
            }
    }).start();
    Log.d("ONCREATE", my);  
}

}

二是DBHelper

public class DBHelper {
private final Context myContext;

public DBHelper(Context context) {      
    this.myContext = context;       
}

}

第三个扩展了 DBhelper

public class Translation extends DBHelper {


public Translation(Runnable runnable) {
    super((Context) runnable);          
    }

public String doSomeJob(){
    return "Yes I DID!";
}

}

未来我会改变这个类来做真正的工作,但现在,当我运行这个时,我得到这个错误:

  • 05-11 13:15:53.003:E/AndroidRuntime(512):未捕获的处理程序:线程 Thread-8 由于未捕获的异常而退出
  • 05-11 13:15:53.028: E/AndroidRuntime(512): java.lang.ClassCastException: iKA.PROJ.TestProjActivity$1
  • 05-11 13:15:53.028: E/AndroidRuntime(512): at another.pack.Translation.(Translation.java:10)
  • 05-11 13:15:53.028: E/AndroidRuntime(512): 在 iKA.PROJ.TestProjActivity$1.run(TestProjActivity.java:20)
  • 05-11 13:15:53.028: E/AndroidRuntime(512): 在 java.lang.Thread.run(Thread.java:1096)
  • 05-11 13:15:53.053: I/dalvikvm(512): threadid=7: 对信号 3 做出反应
  • 05-11 13:15:53.053: E/dalvikvm(512): 无法打开堆栈跟踪文件'/data/anr/traces.txt': 权限被拒绝
  • 05-11 13:20:53.135: I/Process(512): 发送信号。PID:512 SIG:9

我错了什么?

4

2 回答 2

4

您正在尝试将您的内容Runnable转换为Context. 这是不可能的

我想你想做的是

Translation th = new Translation(TestProjActivity.this);

public Translation(Context context) {
    super(context);          
}
于 2012-06-07T07:23:26.930 回答
1

翻译构造函数采用 Activity(Context)。但是 Translation 构造函数签名采用 Runnable。我认为这是您的问题(从 Context/Activity 到 Runnable 的错误类转换)。

于 2012-06-07T07:28:01.660 回答