現在、Androidスタジオコードで最初のAndroidアプリケーションを開発中です。アプリは複数のアクティビティで構成されています。私の仮想デバイスでは美しく動作していますが、2回目のアクティビティで3回目のアクティビティを開始すると、デバイスでアプリがクラッシュします。したがって、問題なくメインのアクティビティから2番目のアクティビティに移動することができます。インテントで新しいアクティビティを開始するとAndroidアプリがクラッシュする
以下は私のクラスです。私がアプリケーションを実行しているときには、if文(encryptedPassword.equals(storedPassword))の後にトーストメッセージが表示されることに注意することが重要です。その後、アプリがクラッシュします。私はどんな誤りも見ない。さらに、明らかにそのポイントの前にアプリがクラッシュしているため、私は例外をキャッチできません。
public class LoginActivity extends AppCompatActivity {
private String errorLogin;
private String wrongPassword;
private String rightPassword;
private String tryAgain;
private String greeting;
private static final String PACKAGE_NAME = "nl.test.notevault.activities";
private static final String NOTES_ACTIVITY = "NotesActivity";
Button loginButton;
EditText loginPassword;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
loginButton = (Button)findViewById(R.id.loginButton);
loginPassword = (EditText)findViewById(R.id.loginPassword);
context = this;
errorLogin = getString(R.string.error_login_general);
wrongPassword = getString(R.string.error_login_wrong_password);
rightPassword = getString(R.string.success_login_general);
tryAgain = getString(R.string.action_try_again);
greeting = getString(R.string.greeting_general);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
EncryptString e = new EncryptString();
String encryptedPassword = e.encrypt(loginPassword.getText().toString());
KeyValueDB k = new KeyValueDB();
String storedPassword = k.getPassword(context);
if (encryptedPassword.equals(storedPassword)) {
Toast.makeText(getApplicationContext(), rightPassword + ". " + greeting + ", " + k.getUsername(context) + "!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(LoginActivity.this, NotesActivity.class);
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), wrongPassword + ". " + tryAgain + ".", Toast.LENGTH_SHORT).show();
loginPassword.setText(null);
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(), errorLogin + ".", Toast.LENGTH_SHORT).show();
}
}
});
私のマニフェストに何か問題がある可能性があります。あなたはそれを見ることができます。すべてのアクティビティはアクティビティパッケージに格納されます。
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".activities.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activities.LoginActivity"
android:label="@string/title_activity_login" />
<activity
android:name=".activities.SetupActivity"
android:label="@string/title_activity_setup" />
<activity android:name=".activities.CreateNoteActivity" />
<activity android:name=".activities.NotesActivity"
android:label="Notes" />
<activity android:name=".activities.EditNoteActivity" />
<activity android:name=".activities.SettingsActivity"></activity>
</application>
仮想デバイスのlogcat出力。アプリは仮想デバイスで正常に動作していることに注意してください。私は右のコネクタatmを持っていないという事実のために私のコンピュータに私の電話を接続することができません。
W/System: ClassLoader referenced unknown path: /data/app/nl.test.notevault-2/lib/x86
I/InstantRun: Instant Run Runtime started. Android package is nl.test.notevault, real application class is null.
W/System: ClassLoader referenced unknown path: /data/app/nl.test.notevault-2/lib/x86
W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
I/OpenGLRenderer: Initialized EGL, version 1.4
D/OpenGLRenderer: Swap behavior 1
E/EGL_emulation: tid 3721: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH)
W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xaefc9e60, error=EGL_BAD_MATCH
W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
E/EGL_emulation: tid 3721: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH)
W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x92ab8ac0, error=EGL_BAD_MATCH
E/EGL_emulation: tid 3721: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH)
W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xaefd0280, error=EGL_BAD_MATCH
W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
E/EGL_emulation: tid 3721: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH)
W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x92ab9680, error=EGL_BAD_MATCH
E/EGL_emulation: tid 3721: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH)
W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xaefc9e40, error=EGL_BAD_MATCH
W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
[logcatはあなたのアプリが停止した理由を教えてくれます](http://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this)。あなたの質問を編集してください。 –
また、トースト例外もありません。常に 'Log.e' them –
実際にどこが壊れているのかログを見ることはできますか? – EJoshuaS