运行时异常: java.lang.IllegalAccessException: class TuserActivity 无法从类 android.app.Instrumentation 中访问

5

首先,我是一个Android的初学者。我正在使用Firebase开发一个简单的登录应用程序,在运行代码时遇到了以下运行时异常。我正在使用电话号码验证,应用程序已经成功安装,但是我无法进入TuserActivity,请问有人能告诉我如何解决这个问题吗?

java.lang.RuntimeException: 无法实例化组件信息 TuserActivity:java.lang.IllegalAccessException:从类android.app.Instrumentation无法访问类TuserActivity

import android.content.Intent;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
        public EditText emailId, passwd;
        Button btnSignUp;
        TextView signIn,txuser;
        FirebaseAuth firebaseAuth;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            firebaseAuth = FirebaseAuth.getInstance();
            emailId = findViewById(R.id.ETemail);
            passwd = findViewById(R.id.ETpassword);
            btnSignUp = findViewById(R.id.btnSignUp);
            signIn = findViewById(R.id.TVSignIn);
            txuser = findViewById(R.id.tuser);
            btnSignUp.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    String emailID = emailId.getText().toString();
                    String paswd = passwd.getText().toString();
                    if (emailID.isEmpty()) {
                        emailId.setError("Enter your E-mail");
                        emailId.requestFocus();
                    } else if (paswd.isEmpty()) {
                        passwd.setError("Enter your password");
                        passwd.requestFocus();
                    } else if (emailID.isEmpty() && paswd.isEmpty()) {
                        Toast.makeText(MainActivity.this, "Fields Empty!", Toast.LENGTH_SHORT).show();
                    } else if (!(emailID.isEmpty() && paswd.isEmpty())) {
                        firebaseAuth.createUserWithEmailAndPassword(emailID, paswd).addOnCompleteListener(MainActivity.this, new OnCompleteListener() {
                            @Override
                            public void onComplete(Task task) {

                                if (!task.isSuccessful()) {
                                    Toast.makeText(MainActivity.this.getApplicationContext(),
                                            "SignUp unsuccessful: " + task.getException().getMessage(),
                                            Toast.LENGTH_SHORT).show();
                                } else {
                                    startActivity(new Intent(MainActivity.this, UserActivity.class));
                                }
                            }
                        });
                    } else {
                        Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_SHORT).show();
                    }
                }
            });
            signIn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent I = new Intent(MainActivity.this, Activity_Login.class);
                    startActivity(I);
                }
            });

            txuser.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent I = new Intent(MainActivity.this, TuserActivity.class);
                    startActivity(I);

                }
            });
        }
}

清单:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".Activity_Login"></activity>

    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/google_maps_key" />

    <activity
        android:name=".MapsActivity"></activity>

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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


你能发布你的AndroidManifest吗? - Lena Bru
是的,这里它是。我添加了... - user10993489
那是一个奇怪的异常。你是如何安装你的应用程序的?(我建议现在手动卸载,然后清除AndroidStudio中的缓存并重新构建)。 - Blundell
如果你不用测量仪器运行它,它能工作吗? - Lena Bru
我尝试了你提出的两个建议,但还是不行。 - user10993489
请添加您的“TuserActivity”类内容。同时请回复@AlexMamo。 - Alex Mamo
1个回答

18

这只是发生在我身上的事情。 我忘记使用 public 修饰符将我的活动(在您的情况下,TuserActivity)设置为公共的。似乎Android无法访问未明确声明为public的java Activity。例如:

public class TuserActivity extends AppCompatActivity

此外,如果您是2020年初接触Android的新手,那么您真的应该考虑从Kotlin开始。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接