【问题标题】:Error trying to start new activity on Android app尝试在 Android 应用上启动新活动时出错
【发布时间】:2021-05-26 16:19:59
【问题描述】:

我的日志猫

2021-05-26 19:04:51.813 25933-25933/com.melikerdemkoc.myvetapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.melikerdemkoc.myvetapp, PID: 25933
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.melikerdemkoc.myvetapp/com.melikerdemkoc.myvetapp.Kayit_ol_acticvity}: java.lang.IllegalAccessException: java.lang.Class<com.melikerdemkoc.myvetapp.Kayit_ol_acticvity> is not accessible from java.lang.Class<android.app.AppComponentFactory>
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3365)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: java.lang.IllegalAccessException: java.lang.Class<com.melikerdemkoc.myvetapp.Kayit_ol_acticvity> is not accessible from java.lang.Class<android.app.AppComponentFactory>
        at java.lang.Class.newInstance(Native Method)
        at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
        at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1253)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3353)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:223) 
        at android.app.ActivityThread.main(ActivityThread.java:7656) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)**

这是我的 logcat 错误,我想在页面之间切换,但我不能这样做。您可以在下面找到代码



package com.melikerdemkoc.myvetapp;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.melikerdemkoc.myvetapp.R;

public class MainActivity extends AppCompatActivity {

    Button btnNext;
    Context context = this;

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

        btnNext = findViewById(R.id.kayıtol);



        btnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //Intent ıntent = new Intent(MainActivity.this, SecondActivity.class);
                Intent ıntent = new Intent(context, Kayit_ol_acticvity.class);

                startActivity(ıntent);
            }
        });
    }
}

    
    package com.melikerdemkoc.myvetapp;
    
    import android.os.Bundle;
    
    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AppCompatActivity;
    
    class Kayit_ol_acticvity extends AppCompatActivity {
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.kayit_ol);
        }
    }

我的代码中出现了这样的行,很遗憾,我还没有找到解决方案,如果您能帮助我,我将不胜感激!提前致谢!

在此代码中,我的目的是在您单击 REGISTER 时将您引导至注册页面。 **意图是如此重要,如果你这样做,请为我的项目发送代码我很高兴谢谢你我需要这个

【问题讨论】:

    标签: java android android-intent


    【解决方案1】:

    您的错误表明该类不可访问。

    你已经这样定义了这个类:

    class Kayit_ol_acticvity extends AppCompatActivity {
    

    在 Java 中,如果您不指定类的访问类型,则默认为 package,这意味着它只能被同一包中的其他代码访问。它必须是public,Android 类才能访问它。

    将您的代码更改为:

    public class Kayit_ol_acticvity extends AppCompatActivity {
    

    【讨论】:

      【解决方案2】:

      Kayit_ol_acticvity 应该是public
      试试这个:

      public class Kayit_ol_acticvity extends AppCompatActivity {...
      }
      

      文档 -Controlling Access to Members of a Class

      可以使用修饰符 public 声明一个类,在这种情况下 类对任何地方的所有类都是可见的。如果一个类没有修饰符 (默认,也称为包私有),它只可见 在它自己的包中(包被命名为相关类的组)

      附:使用 UpperCamelCase 命名类并避免使用 _ 是很好的基调,所以在你的情况下它是 KayitOlActicvity

      【讨论】:

        猜你喜欢
        • 2013-06-24
        • 2014-04-14
        • 2016-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-26
        • 2015-06-05
        相关资源
        最近更新 更多