2012-06-07 2 views
0

У меня есть три класса в моем приложении. Первый расширяет активностьAndroid - Использование темы

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) : Uncaught обработчик: тема-8, выходящий из-за исключением неперехваченного
  • 05-11 13: 15: 53.028: Е/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): at iKA.PROJ.TestProjActivity $ 1.run (TestProjActivity.java:20)
  • 05-11 13: 15: 53.028: E/AndroidRuntime (512): at 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

Вы пытаетесь направить свой Runnable в Context. Это не возможно

Я думаю, что вы хотите сделать, это

Translation th = new Translation(TestProjActivity.this); 

и

public Translation(Context context) { 
    super(context);   
} 
+0

и как вызвать супер-конструктор DBHelper(), он будет не определен –

+0

см. Мой отредактированный ответ – VinceFR

1

конструктор Translation принимают активность (Context). Но подпись конструктора Translation принимает Runnable. Я думаю, что это ваша проблема (неправильный класс, выбранный из Context/Activity to Runnable).

+0

да, что я нашел и исправил. –

Смежные вопросы