不是封闭的类错误Android Studio

要须心地收汗马,孔孟行世目杲杲。这篇文章主要讲述不是封闭的类错误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); }

【不是封闭的类错误Android Studio】虽然我在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);


    推荐阅读