我已經在個人Android應用程序中實現了ListView
。 我使用ArrayAdapter
類的自定義子類綁定到此ListView
。 在重寫的ArrayAdapter.getView(...)
方法內部,我分配了一個OnClickListener
。 我想在OnClickListener
的onClick
方法中啓動一個新活動。 我獲得例外: ide
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
如何獲取ListView
(當前Activity
)在其下工做的Context
? ui
您能夠使用addFlags代替setFlags
來實現 this
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
根據文檔,它能夠: url
向意圖添加其餘標誌(或使用現有標誌值)。 spa
編輯 code
請注意,若是您使用的標誌會更改歷史記錄堆棧,如Alex Volovoy的回答所述 : 事件
...避免設置標誌,由於它會干擾事件和歷史記錄堆棧的正常流程。 文檔
對於即便在活動中調用StartActivity的狀況下,也能夠在Xamarin.Android(MonoDroid)上得到此權限的人-這其實是具備新ART運行時的Xamarin錯誤,請參閱https://bugzilla.xamarin.com/show_bug.cgi?id=17630 get
CustomAdapter mAdapter = new CustomAdapter( getApplicationContext(), yourlist);
要麼 it
Context mContext = getAppliactionContext(); CustomAdapter mAdapter = new CustomAdapter( mContext, yourlist);
轉到下面
CustomAdapter mAdapter = new CustomAdapter( this, yourlist);
我認爲,最好在Activity.class
的代碼中使用startActivity()
方法。 若是在Adapter
或其餘類中使用它,則會致使這種狀況。
另外:若是您在片斷視圖的列表視圖中顯示連接,請不要這樣建立連接
adapter = new ListAdapter(getActivity().getApplicationContext(),mStrings);
代替打電話
adapter = new ListAdapter(getActivity(),mStrings);
適配器在兩種狀況下均能正常工做,但連接僅在最後一種狀況下有效。