如题,感觉在AndroidManifest.xml里都输入了,但跳转的时候还是会报错
AndroidManifest.xml代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.mys">
<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/Theme.Mys">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity2"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MyAdapter"
tools:ignore="Instantiatable" />
</application>
</manifest>
报错提示
2021-12-09 11:07:49.297 20235-20235/com.example.mys E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mys, PID: 20235
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.mys/com.example.mys.MyAdapter}: java.lang.InstantiationException: java.lang.Class<com.example.mys.MyAdapter> has no zero argument constructor
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.InstantiationException: java.lang.Class<com.example.mys.MyAdapter> has no zero argument constructor
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)
2021-12-09 11:07:49.303 20235-20261/com.example.mys D/libEGL: loaded /vendor/lib/egl/libGLESv1_CM_emulation.so
2021-12-09 11:07:49.306 20235-20261/? D/libEGL: loaded /vendor/lib/egl/libGLESv2_emulation.so
2021-12-09 11:07:49.308 20235-20235/? I/Process: Sending signal. PID: 20235 SIG: 9
你的Recyclerview应该放在activity_main2的布局里面
你的MyAdapter注册在清单里面干嘛? 跳转? MyAdapter不回还是个Activity吧
从MainActivity跳转到MainActivity2就会报错闪退
package com.example.mys;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private Button Login;
private EditText User, Password;
private CheckBox cbIsRememberPass;
private SharedPreferences sharedPreferences;
private List<Bean> data = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
// this.requestWindowFeature(Window.FEATURE_NO_TITLE);
// setContentView(R.layout.activity_login);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
sharedPreferences = getSharedPreferences("rememberpassword", Context.MODE_PRIVATE);
boolean isRemember = sharedPreferences.getBoolean("rememberpassword", false);
if (isRemember) {
String user = sharedPreferences.getString("user", "");
String password = sharedPreferences.getString("password", "");
User.setText(user);
Password.setText(password);
cbIsRememberPass.setChecked(true);
}
User = findViewById(R.id.user);
Password = findViewById(R.id.password);
Login = findViewById(R.id.login);
Login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String user = User.getText().toString();
String password = Password.getText().toString();
if (user.length() == 0) {
Toast.makeText(MainActivity.this, "用户名不能为空", Toast.LENGTH_SHORT).show();
} else if (password.length() == 0) {
Toast.makeText(MainActivity.this, "密码不能为空", Toast.LENGTH_SHORT).show();
} else if ((Password.getText().toString().trim()).equals(User.getText().toString().trim())) {
SharedPreferences.Editor editor = sharedPreferences.edit();
if (cbIsRememberPass.isChecked()) {
editor.putBoolean("rememberpassword", true);
editor.putString("user", user);
editor.putString("password", password);
Intent intent = new Intent(MainActivity.this, MyAdapter.class);
startActivity(intent);
} else {
editor.clear();
}
editor.commit();
finish();
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this, MainActivity2.class);
startActivity(intent);
MainActivity.this.finish();
} else {
Toast.makeText(MainActivity.this, "两次输入的密码不一致", Toast.LENGTH_SHORT).show();
}
}
});
}
private void initViews() {
User = (EditText) findViewById(R.id.user);
Password = (EditText) findViewById(R.id.password);
cbIsRememberPass = (CheckBox) findViewById(R.id.cbIsRememberPass);
}
public void callPhone(View view) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:071"));
startActivity(intent);
}
}
Intent intent = new Intent(MainActivity.this, MyAdapter.class);
startActivity(intent);
MyAdapter都不是Activity 怎么可以去显示启动呀 这句代码跑起来肯定会报错的