2017-12-02 74 views
0

我是java編碼和Android Studio的新手,所以請耐心等待,並感謝您提供的任何幫助。用戶在註冊活動頁面中註冊之後,我希望他們能夠按登錄頁面中的登錄按鈕,然後讓應用程序進入配置文件活動頁面。但是,輸入用戶名和密碼並按登錄頁面中的登錄按鈕後,應用程序崩潰。這裏是一組代碼,這第一組是「LoginPageActivity.java」活動中的登錄頁面代碼。登錄頁面不會打開配置文件活動

package com.example.xxxx.safetyxxxxxxx; 

import android.content.Intent; 
import android.support.annotation.NonNull; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Patterns; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.ProgressBar; 
import android.widget.Toast; 


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



public class LoginPageActivity extends AppCompatActivity implements View.OnClickListener{ 

    FirebaseAuth mAuth; 
    EditText editTextEmail, editTextPassword; 
    ProgressBar progressBar; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login_page); 

     mAuth = FirebaseAuth.getInstance(); 

     editTextEmail = findViewById(R.id.editTextEmail); 
     editTextPassword= (EditText) findViewById(R.id.editTextPassword); 
     progressBar = (ProgressBar) findViewById(R.id.progressbar); 

    findViewById(R.id.textViewSignUp).setOnClickListener(this); 
    findViewById(R.id.buttonLogin).setOnClickListener(this); 

} 

private void userLogin(){ 

    String email = editTextEmail.getText().toString().trim(); 
    String password = editTextPassword.getText().toString().trim(); 

    if(email.isEmpty()){ 
     editTextEmail.setError("Email is required"); 
     editTextEmail.requestFocus(); 
     return; 
    } 

    if(!Patterns.EMAIL_ADDRESS.matcher(email).matches()){ 
     editTextEmail.setError("Please enter a valid email"); 
     editTextEmail.requestFocus(); 
     return; 
    } 

    if(password.isEmpty()){ 
     editTextPassword.setError("Password is required"); 
     editTextPassword.requestFocus(); 
     return; 
    } 

    if(password.length()<6){ 
     editTextPassword.setError("Minimum length of password should be 6"); 
     editTextPassword.requestFocus(); 
     return; 
    } 

    progressBar.setVisibility(View.VISIBLE); 
     mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() { 
      @Override 
      public void onComplete(@NonNull Task<AuthResult> task) { 
       progressBar.setVisibility(View.GONE); 
       if (task.isSuccessful()) { 
        Intent intent = new Intent(LoginPageActivity.this, ProfileActivity.class); 
        startActivity(intent); 
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        finish(); 
       } else { 
        Toast.makeText(getApplicationContext(), task.getException().getMessage(), Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 

} 

    @Override 
    public void onClick(View view) { 
      switch (view.getId()) { 
       case R.id.textViewSignUp: 

        startActivity(new Intent(this, SignUpActivity.class)); 

        break; 

       case R.id.buttonLogin: 
        userLogin(); 
        break; 
      } 
     } 
    } 

這裏被稱爲 「ProfileActivity.java」 的姿態的活動

package com.example.xxxx.safetyxxxxxxx; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

public class ProfileActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_profile); 
    } 
} 

下面是Android清單代碼。我已經嘗試了許多不同的變體,基於過去的研究和以前的問題,使用相同的logcat錯誤來聲明此清單中的ProfileActivity類。

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

    <application 
     android:name=".Database" 
     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=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".LoginPageActivity" 
      android:label="@string/app_name"/> 
     <activity android:name=".Main2Activity" /> 
     <activity 
      android:name=".SignUpActivity" 
      android:label="@string/app_name"> 

    </activity> 
     <activity android:name=".ProfileActivity" 
     android:label="@string/app_name"/> 
    </application> 

</manifest> 

這裏是logcat的錯誤

12月12日至2日:04:56.008 2644年至2644年/ com.example.xxxx.safetyxxxxxxx E/AndroidRuntime:致命異常:主

Process: com.example.xxxx.safetyxxxxxxx, PID: 2644 
                     android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.xxxx.safetyxxxxxxx/com.example.xxxx.safetyxxxxxxx.ProfileActivity}; have you declared this activity in your AndroidManifest.xml? 
                      at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1933) 
                      at android.app.Instrumentation.execStartActivity(Instrumentation.java:1616) 
                      at android.app.Activity.startActivityForResult(Activity.java:4488) 
                      at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54) 
                      at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:67) 
                      at android.app.Activity.startActivityForResult(Activity.java:4446) 
                      at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:720) 
                      at android.app.Activity.startActivity(Activity.java:4807) 
                      at android.app.Activity.startActivity(Activity.java:4775) 
                      at com.example.xxxx.safetyxxxxxxx.LoginPageActivity$1.onComplete(LoginPageActivity.java:79) 
                      at com.google.android.gms.tasks.zzf.run(Unknown Source:23) 
                      at android.os.Handler.handleCallback(Handler.java:790) 
                      at android.os.Handler.dispatchMessage(Handler.java:99) 
                      at android.os.Looper.loop(Looper.java:164) 
                      at android.app.ActivityThread.main(ActivityThread.java:6494) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 

最後在需要的情況下,這裏是被稱爲「activity_login_page.xml」的登錄頁面佈局代碼

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".LoginPageActivity"> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="0dp" 
     android:layout_height="53dp" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     android:text="Hi, Welcome to Safety xxxxxxx Please Login or Signup" 
     android:textAlignment="center" 
     android:textColor="@android:color/holo_green_dark" 
     android:textSize="20sp" 
     app:layout_constraintBottom_toTopOf="@+id/buttonLogin" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintVertical_bias="0.66"></TextView> 


    <Button 
     android:id="@+id/buttonLogin" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     android:text="Login" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintVertical_bias="0.87" /> 

    <EditText 
     android:id="@+id/editTextEmail" 
     android:layout_width="346dp" 
     android:layout_height="50dp" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     android:ems="10" 
     android:hint="email" 
     android:inputType="textEmailAddress" 
     app:layout_constraintBottom_toTopOf="@+id/editTextPassword" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="@+id/textView2" 
     app:layout_constraintVertical_bias="0.95" /> 

    <EditText 
     android:id="@+id/editTextPassword" 
     android:layout_width="346dp" 
     android:layout_height="50dp" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     android:ems="10" 
     android:inputType="textPassword" 
     android:hint=" Password" 
     app:layout_constraintBottom_toTopOf="@+id/buttonLogin" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/textView2" 
     app:layout_constraintVertical_bias="0.87" /> 

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_width="219dp" 
     android:layout_height="229dp" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     app:layout_constraintBottom_toTopOf="@+id/editTextEmail" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintHorizontal_bias="0.503" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintVertical_bias="0.233" 
     app:srcCompat="@drawable/safetyxxx" /> 

    <TextView 
     android:id="@+id/textViewSignUp" 
     android:layout_width="345dp" 
     android:layout_height="35dp" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     android:text="Do Not Have An Account? Click Here" 
     android:textAlignment="center" 
     android:textColor="@android:color/holo_green_dark" 
     android:textSize="20sp" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/buttonLogin" /> 

    <android.support.v4.widget.ContentLoadingProgressBar 
     android:id="@+id/progressbar" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:visibility="gone"/> 


</android.support.constraint.ConstraintLayout> 
+0

'android.content.ActivityNotFoundException:無法找到顯式活動類{com.example.xxxx.safetyxxxxxxx/com.example.xxxx.safetyxxxxxxx.ProfileActivity};你有沒有在你的AndroidManifest.xml文件中聲明這個活動? –

+0

請在把它放在這裏之前研究你的問題。很多資源可用於在堆棧溢出中找到此問題的解決方案。 – Mahesh

回答

0

經過多次嘗試,我需要做的只是按重建項目按鈕。它在那之後完美運作。

感謝所有試圖提供幫助的人。

0

它被清除arly在致命消息中表示:android.content.ActivityNotFoundException:無法找到顯式活動類{com.example.xxxx.safetyxxxxxxx/com.example.xxxx.safetyxxxxxxx.ProfileActivity};你有沒有在你的AndroidManifest.xml中聲明這個活動?

所以,你在清單文件中亂七八糟:請嘗試從活動的定義中移除包名:例如像「activity android:name =」com.example.xxxx.safetyxxxxxxx.LoginPageActivity「之類的叮咬應該更改爲「activity android:name =」。LoginPageActivity「

此致敬禮!

+0

感謝您的幫助,但我嘗試過,但沒有奏效。 <活動機器人:名稱= 「LoginPageActivity」 機器人:標籤= 「@串/ APP_NAME」/> <活動機器人:名稱= 「Main2Activity。」/> <活動 機器人:名稱=」。SignUpActivity 「 機器人:標籤= 」@字符串/ APP_NAME「> <活動機器人:名字=」 ProfileActivity。」 機器人:標籤= 「@字符串/ APP_NAME」/> wolfgang

+0

是它仍然會崩潰?你能不能發佈新的logcat? – Cadet

+0

仍然崩潰。發佈了更新的logcat,我認爲沒有什麼變化。 – wolfgang

0

您可以試試這個鏡頭。

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

    <application 
     android:name=".Database" 
     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=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".LoginPageActivity" 
      android:label="@string/app_name"> 
      </activity> 
     <activity android:name=".Main2Activity"> 
     </activity> 
     <activity 
      android:name=".SignUpActivity" 
      android:label="@string/app_name"> 
    </activity> 
     <activity android:name=".ProfileActivity" 
     android:label="@string/app_name"> 
     </activity> 
</application> 

</manifest> 

這可能不會幫助,但我會親自給我一槍。