0

アプリに 3 つのクラスがあります。最初にアクティビティを拡張します

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

}

2番目はDBHelperです

public class DBHelper {
private final Context myContext;

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

}

そして3番目は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): キャッチされていないハンドラー: スレッド スレッド 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/プロセス (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)を取ります。ただし、変換コンストラクターの署名はRunnableを使用します。これがあなたの問題だと思います(コンテキスト/アクティビティから実行可能にキャストされたクラスが間違っています)。

于 2012-06-07T07:28:01.660 に答える