2015-04-09 5 views
0

Я хочу сделать андроид приложения Контактов, нет никаких проблем с моим кодом, но когда я выполнить код, давку App и показать сообщениеконтактов приложения Менеджер

«Exavier, к сожалению, перестал работать»

--Main Activity.java

package com.example.enig.exaviser; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 
import java.io.File 
public class MainActivity extends ActionBarActivity { 

    SQLiteDatabase contactsDB = null; 

    Button createDBButton, addContactButton, deleteContactButton, getContactsButton, 
      deleteDBButton; 
    EditText nameEditText, emailEditText, contactListEditText, idEditText; 

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

     createDBButton = (Button) findViewById(R.id.createDBButton); 
     addContactButton = (Button) findViewById(R.id.addContactButton); 
     deleteContactButton = (Button) findViewById(R.id.deleteContactButton); 
     getContactsButton = (Button) findViewById(R.id.getContactsButton); 
     deleteDBButton = (Button) findViewById(R.id.deleteDBButton); 
     nameEditText = (EditText) findViewById(R.id.nameEditText); 
     emailEditText = (EditText) findViewById(R.id.emailEditText); 
     contactListEditText = (EditText) findViewById(R.id.contactListEditText); 
     idEditText = (EditText) findViewById(R.id.idEditText); 

    } 

    public void createDatabase(View view) { 

     try{ 

      // Opens a current database or creates it 
      // Pass the database name, designate that only this app can use it 
      // and a DatabaseErrorHandler in the case of database corruption 
      contactsDB = this.openOrCreateDatabase("MyContacts", MODE_PRIVATE, null); 

      // Execute an SQL statement that isn't select 
      contactsDB.execSQL("CREATE TABLE IF NOT EXISTS contacts " + 
        "(id integer primary key, name VARCHAR, email VARCHAR);"); 

      // The database on the file system 
      File database = getApplicationContext().getDatabasePath("MyContacts.db"); 

      // Check if the database exists 
      if (database.exists()) { 
       Toast.makeText(this, "Database Created", Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(this, "Database Missing", Toast.LENGTH_SHORT).show(); 
      } 

     } 

     catch(Exception e){ 

      Log.e("CONTACTS ERROR", "Error Creating Database"); 

     } 

     // Make buttons clickable since the database was created 
     addContactButton.setClickable(true); 
     deleteContactButton.setClickable(true); 
     getContactsButton.setClickable(true); 
     deleteDBButton.setClickable(true); 

    } 

    public void addContact(View view) { 

     // Get the contact name and email entered 
     String contactName = nameEditText.getText().toString(); 
     String contactEmail = emailEditText.getText().toString(); 

     // Execute SQL statement to insert new data 
     contactsDB.execSQL("INSERT INTO contacts (name, email) VALUES ('" + 
       contactName + "', '" + contactEmail + "');"); 

    } 

    public void getContacts(View view) { 

     // A Cursor provides read and write access to database results 
     Cursor cursor = contactsDB.rawQuery("SELECT * FROM contacts", null); 

     // Get the index for the column name provided 
     int idColumn = cursor.getColumnIndex("id"); 
     int nameColumn = cursor.getColumnIndex("name"); 
     int emailColumn = cursor.getColumnIndex("email"); 

     // Move to the first row of results 
     cursor.moveToFirst(); 

     String contactList = ""; 

     // Verify that we have results 
     if(cursor != null && (cursor.getCount() > 0)){ 

      do{ 
       // Get the results and store them in a String 
       String id = cursor.getString(idColumn); 
       String name = cursor.getString(nameColumn); 
       String email = cursor.getString(emailColumn); 

       contactList = contactList + id + " : " + name + " : " + email + "\n"; 

       // Keep getting results as long as they exist 
      }while(cursor.moveToNext()); 

      contactListEditText.setText(contactList); 

     } else { 

      Toast.makeText(this, "No Results to Show", Toast.LENGTH_SHORT).show(); 
      contactListEditText.setText(""); 

     } 

    } 

    public void deleteContact(View view) { 

     // Get the id to delete 
     String id = idEditText.getText().toString(); 

     // Delete matching id in database 
     contactsDB.execSQL("DELETE FROM contacts WHERE id = " + id + ";"); 

    } 

    public void deleteDatabase(View view) { 

     // Delete database 
     this.deleteDatabase("MyContacts"); 

    } 

    @Override 
    protected void onDestroy() { 

     contactsDB.close(); 

     super.onDestroy(); 
    } 

} 

fragment_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Create Database" 
    android:id="@+id/createDBButton" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:onClick="createDatabase"/> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Add Contact" 
    android:id="@+id/addContactButton" 
    android:layout_alignParentTop="true" 
    android:layout_toRightOf="@+id/createDBButton" 
    android:layout_toEndOf="@+id/createDBButton" 
    android:layout_marginLeft="10dp" 
    android:onClick="addContact" 
    android:clickable="false" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Delete Contact" 
    android:id="@+id/deleteContactButton" 
    android:layout_below="@+id/createDBButton" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:onClick="deleteContact" 
    android:clickable="false"/> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Get Contacts" 
    android:id="@+id/getContactsButton" 
    android:layout_below="@+id/createDBButton" 
    android:layout_toRightOf="@+id/deleteContactButton" 
    android:layout_toEndOf="@+id/deleteContactButton" 
    android:layout_marginLeft="10dp" 
    android:onClick="getContacts" 
    android:clickable="false"/> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/nameEditText" 
    android:layout_below="@+id/deleteContactButton" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:hint="Name" 
    android:layout_marginTop="5dp"/> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/emailEditText" 
    android:layout_below="@+id/nameEditText" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:hint="Email" 
    android:layout_marginTop="5dp" 
    android:inputType="textEmailAddress"/> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="number" 
    android:ems="10" 
    android:id="@+id/idEditText" 
    android:layout_below="@+id/emailEditText" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:hint="ID to Delete" 
    android:layout_marginTop="5dp"/> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Delete Database" 
    android:id="@+id/deleteDBButton" 
    android:onClick="deleteDatabase" 
    android:clickable="false" 
    android:layout_above="@+id/contactListEditText" 
    android:layout_alignRight="@+id/contactListEditText" 
    android:layout_alignEnd="@+id/contactListEditText" /> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="textMultiLine" 
    android:ems="10" 
    android:id="@+id/contactListEditText" 
    android:lines="8" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 
    </RelativeLayout> 

Как исправить эту проблему? заранее спасибо

+0

показать некоторые логарифмы, пожалуйста, – Olayinka

+0

@Ahmed Опубликовать несколько логарифмов пожалуйста – Psypher

ответ

0

Причина, по которой у вас возникла эта проблема, заключается в том, что в действие распространяется действие ActionBarActivity, которое требует применения темы AppCompat.

Все, что вам нужно сделать, это добавить android:theme="@style/Theme.AppCompat.Light" в свой тег приложения в файле AndroidManifest.xml.

Смежные вопросы