我有一個活動MyActivity
,並帶有一個按鈕MyButton
。從外部類文件中定義的偵聽器開始Android活動
我想附加MySpecialOnClickListener
至MyButton
。
我在外部類文件中寫入MySpecialOnClickListener
。
public class MySpecialOnClickListener extends ButtonHandler implements OnClickListener {
public OnClickListenerWithSpeech (Context context)
{ super.context = context; }
@Override
public void onClick(View view) { handleClick(view); }
}
和ButtonHandler看起來像這樣
public abstract class ButtonHandler {
protected Context context;
protected void handleClick (View view){
if (view.getid()==R.id.button_B) {
context.startActivity (new Intent(context, ActivityC.class));
}
}
}
我基本上要保存所有的邏輯在ButtonHandler按鈕。
SO ......正如我所說的,我在外部類文件中定義了MySpecialOnClickListener
。
當我點擊MyButton
時,出現以下致命錯誤。
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
因此,我無法從非活動內正常開始活動。很公平。
但是,如果我將MySpecialOnClickListener
更改爲'MyActivity'中的內部類,它可以正常工作。記住'ButtonHandler'仍然是一個外部類文件。所以它(ActivityC
最終從哪裏開始)不會改變。
我的問題(最後)是:有人可以解釋爲什麼允許一個而另一個不允許的邏輯。我認爲它是一個範圍廣泛的東西或某事,但我有點困惑。看起來代碼開始活動的過程必須字面上在另一個活動。
編輯 - 問題解決了
見下文。班級的位置是不相關的。我只是沒有正確傳遞。
感謝您的幫助佛朗哥。通過搞亂我剛纔知道了,但你已經發現了。 – Tim 2011-03-03 20:11:46