我正在制作一個,當我想將上下文傳遞到使用關鍵字和方法在封閉范圍內運行的靜態函數SplashActivity時,我遇到了問題。SplashActivityCountDownTimerthisgetBaseContext()長話短說我試圖弄清楚如何訪問SplashActivity封閉范圍內的上下文,即CountDownTimer.我嘗試過的:SplashActivity temp = this我已經對的方法做了SplashActivity temp = this;聲明,但決定這對我所做的所有事情都無效,因為我必須為我所做的每個類進行聲明。onCreateActivityActivityActivityActivityContext temp = this.getBaseContext();基本上與上面相同,但對所有的都更靈活,Activity但在我看來對于該程序仍然無效。ClassName.staticFunction(super.getBaseContext());這不會起作用,因為它CountDownTimer不是extends來自SplashActivity,盡管這種解決方案是我一直在尋找的解決方案。代碼:SplashActivity.javapublic class SplashActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { //... new CountDownTimer(3000,100) { //... public void onFinish() { MainActivity.StartActivity( SplashActivity.getBaseContext() ); //SplashActivity. will throw an error, must replace finish(); } }.start(); }}MainActivity.javapublic class MainActivity extends Activity { ... public static void StartActivity(Context mContext) { Intent act = new Intent(mContext, MainActivity.class); mContext.startActivity(act); }}我的期望:運行MainActivity.StartActivity(something.getBaseContext)時SplashActivity CountDownTimer無需創建任何附加變量(因為內存優化),創建視圖MainActivity。
1 回答

楊魅力
TA貢獻1811條經驗 獲得超6個贊
目前,我正在使用這個解決方案:
final Context self = this;
其中插入:
public class SplashActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
final Context self = this; // HERE
//...
new CountDownTimer(3000,100) {
public void onFinish() {
MainActivity.StartActivity( self ); //HERE
...
添加回答
舉報
0/150
提交
取消