不是封闭的类错误Android Studio

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不是封闭的类错误Android Studio相关的知识,希望对你有一定的参考价值。

我是android开发的新手,并且没有深入的Java知识。我长期困在一个问题上。我正在尝试按下按钮打开一个新活动。但我得到一个错误错误:不是封闭的类:Katra_home。

这是MainActivity.java的代码

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button btn=(Button)findViewById(R.id.bhawan1);
   btn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent myIntent = new Intent(Katra_home.this, Katra_home.class);
            Katra_home.this.startActivity(myIntent);
        }
    });

这是Katra_home.java的代码

public class Katra_home extends BaseActivity {

protected static final float MAX_TEXT_SCALE_DELTA = 0.3f;

private ViewPager mPager;
private NavigationAdapter mPagerAdapter;
private SlidingTabLayout mSlidingTabLayout;
private int mFlexibleSpaceHeight;
private int mTabHeight;


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

    ActionBar ab = getSupportActionBar();
    if (ab != null) {
        ab.setDisplayHomeAsUpEnabled(true);
        ab.setHomeButtonEnabled(true);
    }

虽然我在stackoverflow上看到了很多答案,但我无法理解它们,因为我是android开发的新手。所以我想问一下,我需要在代码中进行哪些更改才能使其正常工作。

答案

它应该是

Intent myIntent = new Intent(this, Katra_home.class);
startActivity(myIntent);

您必须使用现有活动上下文来启动新活动,尚未创建新活动,并且您无法使用其上下文或调用方法。

由于您使用了this关键字,因此不会引发封闭类错误。 this是对当前对象的引用 - 正在调用其方法或构造函数的对象。使用this,您只能从实例方法或构造函数中引用当前对象的任何成员。

Katra_home.this是无效的构造

另一答案
Intent myIntent = new Intent(MainActivity.this, Katra_home.class);
startActivity(myIntent);

这应该是完美的一个:)

另一答案

你正在调用不存在的活动的上下文...所以只需将onClick(View v)中的代码替换为Intent intent = new Intent(this,Katra_home.class); startActivity(意向);它肯定会有效....

另一答案
String user_email = email.getText().toString().trim();
firebaseAuth
    .createUserWithEmailAndPassword(user_email,user_password)
    .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if(task.isSuccessful()) {
                Toast.makeText(RegistraionActivity.this, "Registration sucessful", Toast.LENGTH_SHORT).show();
                startActivities(new Intent(RegistraionActivity.this,MainActivity.class));
            }else{
                Toast.makeText(RegistraionActivity.this, "Registration failed", Toast.LENGTH_SHORT).show();
            }
        }
    });
另一答案

用这个替换onClick()方法中的代码:

Intent myIntent = new Intent(this, Katra_home.class);
startActivity(myIntent);

以上是关于不是封闭的类错误Android Studio的主要内容,如果未能解决你的问题,请参考以下文章

Activity 不是 Android Studio 中的封闭类

错误记录Android Studio 配置 AspectJ 报错 ( all buildscript {} blocks must appear before any plugins {} )(代码片

我的Android进阶之旅Android Studio 中 使用git提交代码报错:Can‘t commit changes from multiple changelists at once(代码片

Android studio提示Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.(代码片

Android studio提示Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.(代码片

我正在使用firebase和Android studio [关闭] 。