繁体   English   中英

不是封闭类错误 Android Studio

[英]Not an enclosing class error 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是对当前对象的引用——正在调用其方法或构造函数的对象。 有了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(intent);

它肯定会起作用......

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);
startActivity(new Intent(this, Katra_home.class));

试试这个它会起作用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM