Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在倒计时封闭作用域中访问上下文_Java_Android_Android Context_Countdowntimer - Fatal编程技术网

Java 在倒计时封闭作用域中访问上下文

Java 在倒计时封闭作用域中访问上下文,java,android,android-context,countdowntimer,Java,Android,Android Context,Countdowntimer,我正在制作一个SplashActivity,当我想将SplashActivity上下文传递到一个静态函数中时遇到了一个问题,该函数使用this关键字和getBaseContext()方法在CountDownTimer封闭范围内运行 TL;DR 我试图弄清楚如何在一个封闭的范围内访问SplashActivity上下文,即CountDownTimer 我尝试过的: splash活动温度=此 我做了一个SplashActivity temp=this对活动的onCreate方法的声明,但决定这不会对我

我正在制作一个
SplashActivity
,当我想将
SplashActivity
上下文传递到一个静态函数中时遇到了一个问题,该函数使用
this
关键字和
getBaseContext()
方法在
CountDownTimer
封闭范围内运行

TL;DR

我试图弄清楚如何在一个封闭的范围内访问
SplashActivity
上下文,即
CountDownTimer

我尝试过的:

  • splash活动温度=此

    我做了一个
    SplashActivity temp=this
    活动
    onCreate
    方法的声明,但决定这不会对我所做的所有
    活动
    有效,因为我必须为我所做的每个
    活动
    类声明
    活动

  • Context temp=this.getBaseContext()

    基本上与上述相同,但对所有
    活动更灵活
    ,但在我看来对该计划仍然无效

  • ClassName.staticFunction(super.getBaseContext())

    这将不起作用,因为
    CountDownTimer
    不会
    SplashActivity
    扩展
    ,尽管我一直在寻找这种解决方案

  • 代码:

    SplashActivity.java

    公共类SplashActivity扩展活动{
    @凌驾
    创建时受保护的void(Bundle savedInstanceState){
    //...
    新倒计时(3000100){
    //...
    公共无效onFinish(){
    MainActivity.StartActivity(SplashActivity.getBaseContext());
    //SplashActivity。将引发错误,必须替换
    完成();
    }
    }.start();
    }
    }
    
    MainActivity.java

    
    公共类MainActivity扩展了活动{
    ...
    公共静态void StartActivity(上下文mContext){
    意图行为=新意图(mContext,MainActivity.class);
    mContext.startActivity(act);
    }
    }
    
    我的期望:


    运行
    MainActivity.StartActivity(something.getBaseContext)
    SplashActivity
    CountDownTimer
    中运行
    MainActivity.StartActivity(something.getBaseContext)
    ,而不创建任何附加变量(因为内存优化),创建一个
    MainActivity
    视图。

    现在,我使用此解决方案:

    final Context self=this;
    
    插入到:

    公共类SplashActivity扩展活动{
    @凌驾
    创建时受保护的void(Bundle savedInstanceState){
    final Context self=this;//此处
    //...
    新倒计时(3000100){
    公共无效onFinish(){
    MainActivity.StartActivity(self);//此处
    ...
    
    在这样的时刻,我真希望Java有C++中的
    指针
    你能尝试使用
    MainActivity.StartActivity吗(this@SplashActivity)
    ?@DuyKhanhNguyen不幸的是,它不起作用,尽管我希望它能起作用。