2014-11-13 202 views
0

每次嘗試運行我的應用程序時,都會顯示一個對話框,說明應用程序在手機和模擬器上意外停止。該程序沒有錯誤,我試圖清理我的項目和幾個解決方案,但沒有工作。幾個項目甚至是hello world項目都會出現同樣的問題。應用程序無法啓動。應用程序意外停止

這是我的主要活動:MainActivity.java

package com.noura.luba; 

import android.app.Activity; 
import android.app.Dialog; 
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; 

public class MainActivity extends Activity { 


    TextView forgotPass, createAcc; 
    Button loginButton; 
    EditText userID, pass; 
    LoginDataBaseAdapter loginDataBaseAdapter; 

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

      loginDataBaseAdapter=new LoginDataBaseAdapter(this); 
      loginDataBaseAdapter=loginDataBaseAdapter.open(); 

      forgotPass= (TextView)findViewById(R.id.forgotPasswordTextView); 
      createAcc= (TextView)findViewById(R.id.createAccountTextView); 
      loginButton= (Button)findViewById(R.id.loginButton); 
      userID=(EditText)findViewById(R.id.userIDEditText); 
      pass=(EditText)findViewById(R.id.passwordEditText); 

      createAcc.setOnClickListener(new View.OnClickListener() { 

       public void onClick(View v) { 

        Intent intentCreateAcc = new Intent(getApplicationContext(), CreateAccActivity.class); 
        startActivity(intentCreateAcc); 

       } 
      }); 

      forgotPass.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
      Intent intentForgotPass = new Intent(getApplicationContext(), ForgotPassActivity.class); 
       startActivity(intentForgotPass); 
      } 
      }); 

      loginButton.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 

        String id=userID.getText().toString(); 

        Intent intentLogin = new Intent(getApplicationContext(), Home.class); 

        intentLogin.putExtra("User_ID", id); 
        startActivity(intentLogin); 

       } 

      }); 


    } 

    public void LogIn(View V) 
    { 

     final Dialog dialog = new Dialog(MainActivity.this); 

     dialog.setContentView(R.layout.activity_main); 
     dialog.setTitle("LUBA LogIn"); 

     final EditText userID=(EditText)dialog.findViewById(R.id.userIDEditText); 
     final EditText pass=(EditText)dialog.findViewById(R.id.passwordEditText); 

     Button login = (Button)dialog.findViewById(R.id.loginButton); 


     //Set On ClickListener 
     login.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 

       String userName= userID.getText().toString(); 
       String password=pass.getText().toString(); 

       String storedPassword = loginDataBaseAdapter.getSingleEntry(userName); 

       if(password.equals(storedPassword)) 
       { 
        Toast.makeText(MainActivity.this, "Login Successful", Toast.LENGTH_LONG).show(); 
        dialog.dismiss(); 

       } 
       else 
       { 

        Toast.makeText(MainActivity.this, "User Name and Password do not match", Toast.LENGTH_LONG).show(); 

       } 
      } 
     }); 

     dialog.show(); 
    } 



    protected void onDestroy() { 

     super.onDestroy(); 

     loginDataBaseAdapter.close(); 

    } 


} 

這是我的XML頁面:activity_main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    tools:context="com.noura.luba.MainActivity" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:background="@string/blue" > 

    <ImageView 
     android:id="@+id/LUBAimageView" 
     android:layout_width="fill_parent" 
     android:layout_height="160dp" 
     android:contentDescription="@string/app_name" 
     android:src="@drawable/ic_launcher" /> 

    <EditText 
     android:id="@+id/userIDEditText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/LUBAimageView" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="28dp" 
     android:ems="10" 
     android:inputType="number" 
     android:text="@string/user_edit_text" 
     android:textColor="@string/yellow" 
     > 

     <requestFocus /> 
    </EditText> 

    <EditText 
     android:id="@+id/passwordEditText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/userIDEditText" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="18dp" 
     android:ems="10" 
     android:inputType="textPassword" 
     android:text="@string/password_edit_text" 
     android:textColor="@string/yellow" /> 

    <Button 
     android:id="@+id/loginButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:layout_below="@+id/passwordEditText" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="14dp" 
     android:text="@string/login_button" 
     android:textColor="@string/yellow" /> 



    <TextView 
     android:id="@+id/forgotPasswordTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/LUBAimageView" 
     android:layout_alignStart="@+id/LUBAimageView" 
     android:layout_below="@+id/loginButton" 
     android:layout_marginTop="20dp" 
     android:autoLink="web" 
     android:clickable="true" 
     android:ems="8" 
     android:onClick="forgotPassword" 
     android:text="@string/forgot_password" 
     android:textColor="@string/yellow" /> 

    <TextView 
     android:id="@+id/createAccountTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/forgotPasswordTextView" 
     android:layout_alignBottom="@+id/forgotPasswordTextView" 
     android:layout_alignRight="@+id/LUBAimageView" 
     android:layout_alignEnd="@+id/LUBAimageView" 
     android:onClick="createAccount" 
     android:text="@string/create_account" 
     android:textColor="@string/yellow" /> 

    <include 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/forgotPasswordTextView" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignStart="@+id/forgotPasswordTextView" 
     layout="@layout/noura" /> 

</RelativeLayout> 

,這是logcat的

11-13 22:17:54.092: D/AndroidRuntime(340): Shutting down VM 
11-13 22:17:54.092: W/dalvikvm(340): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
11-13 22:17:54.162: E/AndroidRuntime(340): FATAL EXCEPTION: main 
11-13 22:17:54.162: E/AndroidRuntime(340): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.noura.luba/com.noura.luba.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class android.widget.RelativeLayout 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.os.Looper.loop(Looper.java:123) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.app.ActivityThread.main(ActivityThread.java:3683) 
11-13 22:17:54.162: E/AndroidRuntime(340): at java.lang.reflect.Method.invokeNative(Native Method) 
11-13 22:17:54.162: E/AndroidRuntime(340): at java.lang.reflect.Method.invoke(Method.java:507) 
11-13 22:17:54.162: E/AndroidRuntime(340): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
11-13 22:17:54.162: E/AndroidRuntime(340): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
11-13 22:17:54.162: E/AndroidRuntime(340): at dalvik.system.NativeStart.main(Native Method) 
11-13 22:17:54.162: E/AndroidRuntime(340): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.widget.RelativeLayout 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.view.LayoutInflater.createView(LayoutInflater.java:518) 
11-13 22:17:54.162: E/AndroidRuntime(340): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.view.LayoutInflater.inflate(LayoutInflater.java:386) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
11-13 22:17:54.162: E/AndroidRuntime(340): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.app.Activity.setContentView(Activity.java:1657) 
11-13 22:17:54.162: E/AndroidRuntime(340): at com.noura.luba.MainActivity.onCreate(MainActivity.java:25) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
11-13 22:17:54.162: E/AndroidRuntime(340): ... 11 more 
11-13 22:17:54.162: E/AndroidRuntime(340): Caused by: java.lang.reflect.InvocationTargetException 
11-13 22:17:54.162: E/AndroidRuntime(340): at java.lang.reflect.Constructor.constructNative(Native Method) 
11-13 22:17:54.162: E/AndroidRuntime(340): at java.lang.reflect.Constructor.newInstance(Constructor.java:415) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.view.LayoutInflater.createView(LayoutInflater.java:505) 
11-13 22:17:54.162: E/AndroidRuntime(340): ... 21 more 
11-13 22:17:54.162: E/AndroidRuntime(340): Caused by: android.content.res.Resources$NotFoundException: File #2E5894 from drawable resource ID #0x7f0a0027 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.content.res.Resources.loadDrawable(Resources.java:1714) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.view.View.<init>(View.java:1951) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.view.View.<init>(View.java:1899) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.view.ViewGroup.<init>(ViewGroup.java:286) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.widget.RelativeLayout.<init>(RelativeLayout.java:173) 
11-13 22:17:54.162: E/AndroidRuntime(340): ... 24 more 
11-13 22:17:54.162: E/AndroidRuntime(340): Caused by: java.io.FileNotFoundException: #2E5894 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.content.res.AssetManager.openNonAssetNative(Native Method) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.content.res.AssetManager.openNonAsset(AssetManager.java:406) 
11-13 22:17:54.162: E/AndroidRuntime(340): at android.content.res.Resources.loadDrawable(Resources.java:1706) 
11-13 22:17:54.162: E/AndroidRuntime(340): ... 29 more 
11-13 22:22:54.263: I/Process(340): Sending signal. PID: 340 SIG: 9 

我新的Android應用程序開發,但我認真地嘗試了我能找到的每個解決方案。如果有人能夠幫助我找到最好的解決方案。

編輯

這是LoginDataBaseAdapter.java

package com.noura.luba; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.widget.Toast; 

public class LoginDataBaseAdapter { 

    static final String DATABASE_NAME = "seniorLUBA.db"; 
     static final int DATABASE_VERSION = 1; 

     public static final int NAME_COLUMN = 1; 

     public SQLiteDatabase db; 
     private final Context context; 

     private DataBaseHelper dbHelper; 

     public LoginDataBaseAdapter(Context _context) 
     { 

      context = _context; 
      dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION); 

     } 

     public LoginDataBaseAdapter open() throws SQLException 
     { 
      db=dbHelper.getWritableDatabase(); 
      return this; 
     } 

     public void close() 
     { 
      db.close(); 
     } 

     public SQLiteDatabase getDatabaseInstance() 
     { 
      return db; 
     } 

     public void insertEntry(String userName, String password) 
     { 

      ContentValues newValues = new ContentValues(); 
      newValues.put("USERNAME", userName); 
      newValues.put("PASSWORD", password); 

      db.insert("student", null, newValues); 
      Toast.makeText(context, "User Info Saved", Toast.LENGTH_LONG).show(); 

     } 

     public int deleteEntry(String UserName) 
     { 

      String where="StdId=?"; 
      int numberOFEntriesDeleted = db.delete("student", where, new String[]{UserName}); 
      Toast.makeText(context, "Number of Entry Deleted Successfully : " +numberOFEntriesDeleted, Toast.LENGTH_LONG).show(); 
      return numberOFEntriesDeleted; 
     } 

     public String getSingleEntry(String userName) 
     { 

      Cursor cursor=db.query("student", null, " USERNAME=?", new String[]{userName}, null, null, null); 
      if(cursor.getCount()<1) 
       return "DOES NOT EXIST"; 
      cursor.moveToFirst(); 
      String password= cursor.getString(cursor.getColumnIndex("StdPass")); 
      return password; 
     } 



public void updateEntry(String userName, String password) 
{ 
    ContentValues updatedValues = new ContentValues(); 

    updatedValues.put("UserName", userName); 
    updatedValues.put("Password", password); 

    String where="UserName = ?"; 
    db.update("student", updatedValues, where, new String[]{userName}); 
} 
} 

,這是新的logcat

11-14 02:03:10.618: I/Database(341): sqlite returned: error code = 1, msg = near "seniorLUBA": syntax error 
11-14 02:03:10.629: E/Database(341): Failure 1 (near "seniorLUBA": syntax error) on 0x2bee98 when preparing 'seniorLUBA.db'. 
11-14 02:03:10.668: D/AndroidRuntime(341): Shutting down VM 
11-14 02:03:10.668: W/dalvikvm(341): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
11-14 02:03:10.698: E/AndroidRuntime(341): FATAL EXCEPTION: main 
11-14 02:03:10.698: E/AndroidRuntime(341): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.noura.luba/com.noura.luba.MainActivity}: android.database.sqlite.SQLiteException: near "seniorLUBA": syntax error: seniorLUBA.db 
11-14 02:03:10.698: E/AndroidRuntime(341): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
11-14 02:03:10.698: E/AndroidRuntime(341): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
11-14 02:03:10.698: E/AndroidRuntime(341): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
11-14 02:03:10.698: E/AndroidRuntime(341): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
11-14 02:03:10.698: E/AndroidRuntime(341): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-14 02:03:10.698: E/AndroidRuntime(341): at android.os.Looper.loop(Looper.java:123) 
11-14 02:03:10.698: E/AndroidRuntime(341): at android.app.ActivityThread.main(ActivityThread.java:3683) 
11-14 02:03:10.698: E/AndroidRuntime(341): at java.lang.reflect.Method.invokeNative(Native Method) 
11-14 02:03:10.698: E/AndroidRuntime(341): at java.lang.reflect.Method.invoke(Method.java:507) 
11-14 02:03:10.698: E/AndroidRuntime(341): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
11-14 02:03:10.698: E/AndroidRuntime(341): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
11-14 02:03:10.698: E/AndroidRuntime(341): at dalvik.system.NativeStart.main(Native Method) 
11-14 02:03:10.698: E/AndroidRuntime(341): Caused by: android.database.sqlite.SQLiteException: near "seniorLUBA": syntax error: seniorLUBA.db 
11-14 02:03:10.698: E/AndroidRuntime(341): at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method) 
11-14 02:03:10.698: E/AndroidRuntime(341): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1763) 
11-14 02:03:10.698: E/AndroidRuntime(341): at com.noura.luba.DataBaseHelper.onCreate(DataBaseHelper.java:18) 
11-14 02:03:10.698: E/AndroidRuntime(341): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:126) 
11-14 02:03:10.698: E/AndroidRuntime(341): at com.noura.luba.LoginDataBaseAdapter.open(LoginDataBaseAdapter.java:32) 
11-14 02:03:10.698: E/AndroidRuntime(341): at com.noura.luba.MainActivity.onCreate(MainActivity.java:28) 
11-14 02:03:10.698: E/AndroidRuntime(341): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
11-14 02:03:10.698: E/AndroidRuntime(341): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
11-14 02:03:10.698: E/AndroidRuntime(341): ... 11 more 

回答

-1

它是在佈局XML文件中的資源未發現異常。

  1. 檢查是否所有的維數值都可用。
  2. 檢查所有的字符串聲明是否正確。
  3. 檢查noura佈局是否正確可用。
+0

我檢查所有上述提到的和相同的錯誤仍然存​​在 – JrProgrammer

+0

@Noura,從數據庫中刪除名稱和名.db嘗試...... – Prem

+0

數據庫名稱只是磁盤上的文件名,也可以是任何東西,東西.db都很好。 – Philio

0

如果你開始在你有一個堆棧跟蹤的底部FileNotFoundException資源2E5894

因爲它看起來像引用可繪製的代碼/佈局的唯一部分是單個ImageView它使用啓動器圖標我會開始清理和重建項目,以確保沒有發生奇怪的事情發生。 Eclipse尤其習慣於有時會搞砸資源。

如果這不起作用,那麼你應該能夠查看生成的R類,並找出哪些有問題的資源,並試着找出設備認爲它缺失的原因。

編輯

您的評論暗示這可能是原因的問題。

顏色資源應該被聲明爲color標籤不是字符串:

<resources> 
    <color name="my_color">#ffffffff</color> 
</resources> 

然後,當你在你的視圖中使用它們:

<TextView 
    android:textColor="@color/my_color" /> 
+0

我試過清理項目和重建我的項目,但相同的結果發生。 和資源2e5894是一種顏色,它引用 <字符串名稱=「藍色」>#2E5894 它的實際工作,給我我想要的顏色。我檢查了R.java,發現其中有藍色。 – JrProgrammer

+0

檢查我的編輯,這應該有所幫助。 – Philio

+0

我注意到我的logcat此消息可能你看到它,請與我會添加的類別,其中提到的數據庫是目前 2月11日至14日:03:10.618:I /數據庫(341):sqlite的返回:錯誤代碼= 1,msg =接近「seniorLUBA」:語法錯誤 11-14 02:03:10.629:E /數據庫(341):在準備'seniorLUBA.db'時0x2bee98上出現故障1(靠近「seniorLUBA」:語法錯誤)。 – JrProgrammer