【问题标题】:I am getting the Not an Enclosing Class我得到了非封闭类
【发布时间】:2020-10-27 17:27:11
【问题描述】:

这是我的ActivityHome.java 代码。

我收到名为“不是封闭类,ActivityLogin”的错误。我已经尝试了很多东西,我也在网上搜索过,但我什么也没得到。

ActivityHome.java 由图像和进度条组成。进度条完成后,它将带您进入ActivityLogin.java 页面,该页面由图像和一些文本组成。

问题是在ActivityHome.java 页面之后,它正在关闭应用程序或以永无止境的循环重复该页面。

package com.splashscreen;

import android.animation.ObjectAnimator;
import android.content.Intent;
import android.os.Handler;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ProgressBar;
import com.splashscreen.R;

public class ActivityHome extends AppCompatActivity {

ProgressBar splashProgress;
int SPLASH_TIME = 3000; //This is 3 seconds

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    //This is additional feature, used to run a progress bar
    splashProgress = findViewById(R.id.splashProgress);
    playProgress();

    //Code to start timer and take action after the timer ends
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            //Do any action here. Now we are moving to next page
            Intent mySuperIntent;
            mySuperIntent = new Intent(ActivityLogin.this, ActivityHome.class);
            startActivity(mySuperIntent);

            //This 'finish()' is for exiting the app when back button pressed from Home page which is ActivityHome
            finish();

        }
    }, SPLASH_TIME);
}

//Method to run progress bar for 5 seconds
private void playProgress() {
    ObjectAnimator.ofInt(splashProgress, "progress", 100)
            .setDuration(5000)
            .start();
}
}

而且,这是我的 ActivityLogin.java 代码。

package com.splashscreen;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.splashscreen.R;

public class ActivityLogin extends AppCompatActivity {

Button bt_click_me;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    //Add all your codes here
    bt_click_me = findViewById(R.id.bt_click_me);
    bt_click_me.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(ActivityLogin.this, "You clicked me. Thank you!", Toast.LENGTH_SHORT).show();
        }
    });

}
}

我不知道问题出在哪里,但我收到错误消息“不是封闭类:ActivityLogin;”。

【问题讨论】:

    标签: java android xml class error-handling


    【解决方案1】:

    Intent 的参数在某种程度上是倒退的。

    第一个参数是上下文,指的是当前活动,所以应该是“Home”,第二个参数是你要启动的活动的类,所以应该是“登录”。所以它应该是这样的:

    mySuperIntent = new Intent(ActivityHome.this, ActivityLogin.class);
    

    您收到错误的原因是:ActivityLogin.this 表示“ActivityLogin 的实例封闭当前代码块”。但是这段代码不在 ActivityLogin 类中,所以没有封闭实例。

    【讨论】:

      【解决方案2】:

      检查这是否有效

      new Handler().postDelayed(new Runnable() {
          @Override
          public void run() {
              Intent mySuperIntent;
              mySuperIntent = new Intent(ActivityHome.this, ActivityLogin.class);
              startActivity(mySuperIntent);
      
              //You might be closing the newly opened activity previously
              ActivityHome.this.finish();
      
          }
      }, SPLASH_TIME);
      

      希望这会有所帮助。随时要求澄清...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-17
        • 1970-01-01
        • 2021-12-15
        • 1970-01-01
        • 2017-11-08
        • 1970-01-01
        • 1970-01-01
        • 2015-05-30
        相关资源
        最近更新 更多