当前位置: 首页 > 知识库问答 >
问题:

我的应用程序在android studio模拟器中停止工作

史飞尘
2023-03-14

这里是android manifest的代码,这里是运行模拟器时调试错误消息的链接。当我点击Run或debug按钮时,模拟器出现了,但应用程序显示“AppName停止工作”,我感觉问题不是在android Manifest.xml中,就是在Java代码中。在android清单中,错误代码位于
“android:name=”com.example.quiz.FullScreenActivity“”

错误消息为“该类应提供默认构造函数(没有参数的公共构造函数)(com.example.quiz.FullScreenActivity)”

错误信息

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.quiz">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/quiz"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Quiz">
        <activity
            android:name="com.example.quiz.FullscreenActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/app_name"
            android:theme="@style/Theme.Quiz.Fullscreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

这是Java的密码。

package com.example.quiz;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import com.google.android.material.snackbar.Snackbar;
import java.util.Objects;

public class FullscreenActivity extends AppCompatActivity {
    Button btn1;
    Button btn2;
    Button btn3;
    Button btn4;
    TextView txt1;
    TextView txt2;
    TextView txt3;
    View mainView;
    Snackbar snackbarCorrect;
    Snackbar snackbarWrong;
    private final Object FirstFragment;

    public FullscreenActivity(Object firstFragment) {
        FirstFragment = firstFragment;
    }


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Objects.requireNonNull(getSupportActionBar()).hide();
        setContentView(R.layout.activity_fullscreen);

        if (savedInstanceState == null){
            getSupportFragmentManager().beginTransaction().
                    setReorderingAllowed(true).
                    add(R.id.Fragment, (Fragment) FirstFragment, null).
                    commit();
        }
        btn1 = findViewById(R.id.choice1);
        btn2 = findViewById(R.id.choice2);
        btn3 = findViewById(R.id.choice3);
        btn4 = findViewById(R.id.choice4);
        mainView = findViewById(R.id.matchmaker);
        txt1 = findViewById(R.id.textView1);
        txt2 = findViewById(R.id.TextView2);
        txt3 = findViewById(R.id.TextView3);
        //READ ABOUT EVENT HANDLERS , Listeners
        snackbarCorrect = Snackbar.make(mainView, "Well done!", 1000);
        snackbarWrong = Snackbar.make(mainView, "Try again!", 1000);
        mainView.setOnClickListener(v -> mainView.setBackgroundColor(Color.BLUE));

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //txt1.setText("Try again");
                snackbarWrong.show();
            }
        });

        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //txt2.setText("Well done that\nis correct");
                snackbarCorrect.show();
            }
        });
        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //txt3.setText("Try again");
                snackbarWrong.show();

            }
        });
        btn4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent =new Intent(FullscreenActivity.this, Activity2.class);
                startActivity(intent);
            }
        });

    } // end of onCreate
}// end of activity

共有1个答案

米承嗣
2023-03-14

尝试在private final Object firstfragment;下面添加一个无参数默认构造函数,如错误所述:

 public FullscreenActivity(){}

因此,您的整个代码应该是:

package com.example.quiz;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import com.google.android.material.snackbar.Snackbar;
import java.util.Objects;

public class FullscreenActivity extends AppCompatActivity {
    Button btn1;
    Button btn2;
    Button btn3;
    Button btn4;
    TextView txt1;
    TextView txt2;
    TextView txt3;
    View mainView;
    Snackbar snackbarCorrect;
    Snackbar snackbarWrong;
    private final Object FirstFragment;
    
// Only change required
    public FullscreenActivity(){}

    public FullscreenActivity(Object firstFragment) {
        FirstFragment = firstFragment;
    }


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Objects.requireNonNull(getSupportActionBar()).hide();
        setContentView(R.layout.activity_fullscreen);

        if (savedInstanceState == null){
            getSupportFragmentManager().beginTransaction().
                    setReorderingAllowed(true).
                    add(R.id.Fragment, (Fragment) FirstFragment, null).
                    commit();
        }
        btn1 = findViewById(R.id.choice1);
        btn2 = findViewById(R.id.choice2);
        btn3 = findViewById(R.id.choice3);
        btn4 = findViewById(R.id.choice4);
        mainView = findViewById(R.id.matchmaker);
        txt1 = findViewById(R.id.textView1);
        txt2 = findViewById(R.id.TextView2);
        txt3 = findViewById(R.id.TextView3);
        //READ ABOUT EVENT HANDLERS , Listeners
        snackbarCorrect = Snackbar.make(mainView, "Well done!", 1000);
        snackbarWrong = Snackbar.make(mainView, "Try again!", 1000);
        mainView.setOnClickListener(v -> mainView.setBackgroundColor(Color.BLUE));

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //txt1.setText("Try again");
                snackbarWrong.show();
            }
        });

        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //txt2.setText("Well done that\nis correct");
                snackbarCorrect.show();
            }
        });
        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //txt3.setText("Try again");
                snackbarWrong.show();

            }
        });
        btn4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent =new Intent(FullscreenActivity.this, Activity2.class);
                startActivity(intent);
            }
        });

    } // end of onCreate
}// end of activity
 类似资料:
  • 编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答问题。 我的主要活动: 我的清单: 我的下一个代码: 下一个: 对于堆栈跟踪排序: 我的xml文件显示第一页: 要显示第二个选项卡的我的xml文件: 最后我想告诉你,我已经坚持了三天了。请更正此代码。中的“TabListener”接口不可用。但忽略它,在几毫秒后运行我的应用程序,然后“很遗憾,你的应用程序停止工作

  • 问题内容: 我是android应用程序开发的新手(仅从昨天开始我才开始学习android)。 我在AVD中收到消息,例如-不幸地已停止,请帮助我解决此错误,我想在android中学习更多信息,但被此错误所吸引.. plz..plz ..帮助我解决这个问题。 我的main.java是 } 我的main.xml是 和日志是 请解释为什么会这样。告诉我解决方案 问题答案: 您在第38行获得了NPE,即:

  • 上周,我完成了一个测试应用程序的开发,并在所有模拟器中成功运行了它。今天我决定考虑发布这个应用程序,并使用了“Sent Android Build”。生成状态“成功”。然后尝试从命令行运行jar,得到: 所以试图逃离GUI并得到: Java版本: 我在Suse Linux 42.1 64b上使用Netbeans(这是新的)。 我在什么地方丢了一个图书馆吗?还是别的什么?

  • logcat: java.lang.IllegalStateException:无法执行Android的方法:onclick 在Android.support.v7.app.appcompatviewWinflater$declaredonClickListener.onclick(appcompatviewWinflater$declaredonClickListener.android.vie

  • 我有一个在 Openshift Online 启动器中运行的应用程序,该应用程序在过去 5 个月内一直有效。服务后面的单个 Pod,定义了执行边缘 tls 终止的路由。 自星期六以来,当尝试访问该应用程序时,我收到错误消息 应用程序不可用应用程序当前未在此endpoint上为请求提供服务。它可能尚未启动或仍在启动。 您看到此页面的可能原因: 主机不存在。确保正确键入了主机名,并且存在与此主机名匹配

  • 我有一个在Openshift 4.6中运行的应用程序。 pod正在运行,我可以执行它并检查它,我可以端口转发到它并访问它。 尝试访问应用程序时,我得到错误消息: 应用程序不可用应用程序当前未在此endpoint上为请求提供服务。它可能尚未启动或仍在启动。 您看到此页面的可能原因: 主机不存在。请确保键入的主机名正确,并且存在与该主机名匹配的路由。 主机存在,但没有匹配的路径。检查URL路径是否输入