简体   繁体   English

你好。 我是 android 应用程序开发的新手。 我尝试创建一个简单的计数器,但在构建后出现错误“无法实例化活动”

[英]Hi! I am new to android app development. I tried to create a simple counter but after build getting error “Unable to instantiate activity”

public abstract class MainActivity extends AppCompatActivity {

    Button decrement;
    Button increment;
    TextView counter_view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       // Log.i("tag", "onCreate: Created Successfully");

        increment=findViewById(R.id.inc_btn);
        decrement=findViewById(R.id.dec_btn);
        counter_view=findViewById(R.id.counter);

        increment.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String cnt_text=counter_view.getText().toString();
                int cnt_no= Integer.parseInt(cnt_text);
                cnt_no=cnt_no+1;
                counter_view.setText(cnt_no+"");
            }
        });

        decrement.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String cnt_text=counter_view.getText().toString();
                int cnt_no=Integer.parseInt(cnt_text);
                cnt_no=cnt_no-1;
                counter_view.setText(cnt_no+"");
            }
        });
    }

Error:错误:

2021-02-10 00:29:06.870 16714-16714/? E/Zygote: v2
2021-02-10 00:29:06.871 16714-16714/? E/Zygote: accessInfo : 0
2021-02-10 00:29:07.017 16714-16714/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.counter_app, PID: 16714
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.counter_app/com.example.counter_app.MainActivity}: java.lang.InstantiationException: java.lang.Class<com.example.counter_app.MainActivity> cannot be instantiated
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2849)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
        at android.app.ActivityThread.-wrap14(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6776)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
     Caused by: java.lang.InstantiationException: java.lang.Class<com.example.counter_app.MainActivity> cannot be instantiated
        at java.lang.Class.newInstance(Native Method)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1086)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2839)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045) 
        at android.app.ActivityThread.-wrap14(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6776) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408) 

add to your manifest file this line将此行添加到您的清单文件中

<activity android:name="your.package.name.MainActivity"/>

I suppose this is your first screen/activity/class that is displayed on launch ie it is your launcher activity.我想这是您在启动时显示的第一个屏幕/活动/类,即它是您的启动器活动。 If yes,如果是,

the launcher activity cannot be abstract.启动器活动不能是抽象的。 Because when an app is launched from the home screen on an Android device, the Android OS creates an instance of the activity in the application you have declared to be the launcher activity.因为当从 Android 设备上的主屏幕启动应用程序时,Android 操作系统会在您声明为启动器活动的应用程序中创建一个活动实例。 And abstract classes can not be instantiated, they can only be sub-classed.而且抽象类不能被实例化,它们只能被子类化。

Please remove the word abstract before your class name.请删除您的 class 名称前的摘要一词。

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

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