为了账号安全,请及时绑定邮箱和手机立即绑定

访问 CountDownTimer 封闭范围内的上下文

访问 CountDownTimer 封闭范围内的上下文

小怪兽爱吃肉 2024-01-05 15:19:31
我正在制作一个,当我想将上下文传递到使用关键字和方法在封闭范围内运行的静态函数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

    ...


查看完整回答
反对 回复 2024-01-05
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信