2016-02-05 2 views
0

Каждый раз, когда я открываю приложение на свой телефон, чтобы проверить это, он близко от второго он открывает и говорит: «» Название приложения «остановлено»Применение на устройстве Закрыть на открытой

его просто закрываться автоматически, даже перейти к основному макету

ps tnx для помощи ребятам!

Debug говорит:

Целевое устройство: 54d1969c Установка APK: C: \ Users \ Эрэл \ AndroidStudioProjects \ AccountSaver \ приложение \ сборки \ выходы \ APK \ приложение-debug.apk Загрузка файлов в: /data/local/tmp/com.erelbiran.accountsaver com.android.ddmlib.AdbCommandRejectedException: устройство несанкционировано. Этот ADB-сервер ADB_VENDOR_KEYS не установлен. Попробуйте «adb kill-server», если , что кажется неправильным. В противном случае проверьте диалог подтверждения на вашем устройстве .

MainActivity

package com.erelbiran.accountsaver; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends Activity { 


    DB myDB; 
    Button btnAdd; 
    EditText User = (EditText)findViewById(R.id.EnterUser), Pass = (EditText)findViewById(R.id.EnterPass), Acc = (EditText)findViewById(R.id.EnterAcc); 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     openDB(); 
     btnAdd.setOnClickListener(
       new View.OnClickListener() 
       { 
       public void onClick(View view) { 
        myDB.insertRow(User.getText().toString(), Pass.getText().toString(), Acc.getText().toString()); 
        Toast.makeText(MainActivity.this, "Account Added!", Toast.LENGTH_SHORT).show(); 
       }} 
       ); 




    } 
    private void openDB(){ 
     myDB = new DB(this); 
     myDB.open(); 
    } 
    private void closeDB(){ 
     myDB.close(); 
    } 

} 

Menifest

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

    <application 
     android:debuggable="true" 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name="MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

базы данных Код:

// ------------------------------------ DBADapter.java --------------------------------------------- 

package com.erelbiran.accountsaver; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 

public class DB { 

    ///////////////////////////////////////////////////////////////////// 
    // Constants & Data 
    ///////////////////////////////////////////////////////////////////// 
    // For logging: 
    private static final String TAG = "DBAdapter"; 

    // DB Fields 
    public static final String KEY_ROWID = "_id"; 
    public static final int KEY_ACCID = 0; 
    public static final String KEY_USER = "username"; 
    public static final String KEY_PASS = "password"; 
    public static final String KEY_ACC = "accounts"; 

    // 
    // Setup fields 
    public static final int COL_USER = 1; 
    public static final int COL_PASS = 2; 
    public static final int COL_ACC = 3; 


    public static final String[] ALL_KEYS = new String[] {KEY_ROWID, KEY_USER, KEY_PASS, KEY_ACC}; 

    // DB info: it's name, and the table we are using (just one). 
    public static final String DATABASE_NAME = "MyDb"; 
    public static final String DATABASE_TABLE = "mainTable"; 
    public static final int DATABASE_VERSION = 1; 

    private static final String DATABASE_CREATE_SQL = 
      "create table " + DATABASE_TABLE 
        + " (" + KEY_ACCID + " integer primary key autoincrement, " 
        + KEY_USER + " string not null, " 
        + KEY_PASS + " string not null, " 
        + KEY_ACC + " string not null" 

        // Rest of creation: 
        + ");"; 

    // Context of application who uses us. 
    private final Context context; 

    private DatabaseHelper myDBHelper; 
    private SQLiteDatabase db; 

    ///////////////////////////////////////////////////////////////////// 
    // Public methods: 
    ///////////////////////////////////////////////////////////////////// 

    public DB(Context ctx) { 
     this.context = ctx; 
     myDBHelper = new DatabaseHelper(context); 
    } 

    // Open the database connection. 
    public DB open() { 
     db = myDBHelper.getWritableDatabase(); 
     return this; 
    } 

    // Close the database connection. 
    public void close() { 
     myDBHelper.close(); 
    } 

    // Add a new set of values to the database. 
    public long insertRow(String username , String password , String account) { 
     ContentValues initialValues = new ContentValues(); 
     initialValues.put(KEY_USER, username); 
     initialValues.put(KEY_PASS, password); 
     initialValues.put(KEY_ACC, account); 


     return db.insert(DATABASE_TABLE, null, initialValues); 
    } 

    // Delete a row from the database, by rowId (primary key) 
    public boolean deleteAcc(long accId) { 
     String where = KEY_ACCID + "=" + accId; 
     return db.delete(DATABASE_TABLE, where, null) != 0; 
    } 

    public void deleteAll() { 
     Cursor c = getAllRows(); 
     long rowId = c.getColumnIndexOrThrow(KEY_ROWID); 
     if (c.moveToFirst()) { 
      do { 
       deleteAcc(c.getLong((int) rowId)); 
      } while (c.moveToNext()); 
     } 
     c.close(); 
    } 



    // Return all data in the database. 
    public Cursor getAllRows() { 
     String where = null; 
     Cursor c = db.query(true, DATABASE_TABLE, ALL_KEYS, 
       where, null, null, null, null, null); 
     if (c != null) { 
      c.moveToFirst(); 
     } 
     return c; 
    } 

    // Get a specific row (by rowId) 
    public Cursor getRow(long rowId) { 
     String where = KEY_ROWID + "=" + rowId; 
     Cursor c = db.query(true, DATABASE_TABLE, ALL_KEYS, 
       where, null, null, null, null, null); 
     if (c != null) { 
      c.moveToFirst(); 
     } 
     return c; 
    } 




    ///////////////////////////////////////////////////////////////////// 
    // Private Helper Classes: 
    ///////////////////////////////////////////////////////////////////// 

    /** 
    * Private class which handles database creation and upgrading. 
    * Used to handle low-level database access. 
    */ 
    private static class DatabaseHelper extends SQLiteOpenHelper 
    { 
     DatabaseHelper(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase _db) { 
      _db.execSQL(DATABASE_CREATE_SQL); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase _db, int oldVersion, int newVersion) { 
      Log.w(TAG, "Upgrading application's database from version " + oldVersion 
        + " to " + newVersion + ", which will destroy all old data!"); 

      // Destroy old database: 
      _db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); 

      // Recreate new database: 
      onCreate(_db); 
     } 
    } 
} 
+0

Возможно, что происходит действие Force Close ... Попробуйте поделиться журналами ... – W0rmH0le

ответ

0

onCreate(Bundle) где вы инициализировать вашу деятельность.
Самое главное, здесь вы обычно вызываете setContentView(int) с ресурсом компоновки, определяющим ваш пользовательский интерфейс, и используя findViewById(int) для извлечения виджетов в этом пользовательском интерфейсе, которые необходимо взаимодействовать с программным обеспечением. Постарайтесь, чтобы получить пользовательский интерфейс в onCreate(Bundle) Просто попробуйте

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    User = (EditText)findViewById(R.id.EnterUser); 
    Pass = (EditText)findViewById(R.id.EnterPass); 
    Acc = (EditText)findViewById(R.id.EnterAcc); 
0

ваша ошибка эта строка:

EditText User = (EditText)findViewById(R.id.EnterUser), 
Pass = (EditText)findViewById(R.id.EnterPass), 
Acc = (EditText)findViewById(R.id.EnterAcc); 

переместить его в OnCreate() вашей деятельности

0

У вас есть erros с вашим код.

Error1:

EditText User = (EditText)findViewById(R.id.EnterUser), Pass = (EditText)findViewById(R.id.EnterPass), Acc = (EditText)findViewById(R.id.EnterAcc); 

Вы должны переместить его в OnCreate. Вы не можете вызвать findViewById вне метода.

Вы должны изменить его на:

public class MainActivity extends Activity { 

    DB myDB; 
    Button btnAdd; 
    EditText User,Pass, Acc; 

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

     User = (EditText)findViewById(R.id.EnterUser); 
     Pass = (EditText)findViewById(R.id.EnterPass); 
     Acc = (EditText)findViewById(R.id.EnterAcc); 
    } 
} 

Обратите внимание, что findViewById вызывается после setContentView()

Error2:

Вы устанавливаете clickListener в нулевой объект:

btnAdd создан, но не создается д.Вы должны найти представление, на которое указывает btnAdd. Используйте findViewByID перед тем setOnClickListener:

public class MainActivity extends Activity { 
    Button btnAdd; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     setContentView(R.layout.activity_main); 
     btnAdd = (Button)findViewById(R.id.btnAdd); 
     btnAdd.setOnClickListener(...... 
    } 
} 

Error3

Строка используется для создания базы данных неправильно. Имена столбцов должны быть внутри кавычек.

Изменить его на что-то вроде:

От

public class DB { 
    private static final String DATABASE_CREATE_SQL = 
     "create table " + DATABASE_TABLE 
     + " (" + KEY_ACCID + " integer primary key autoincrement, " 
     + KEY_USER + " string not null, " 
     + KEY_PASS + " string not null, " 
     + KEY_ACC + " string not null" 
     + ");"; 
} 

Для

public class DB { 
    private static final String DATABASE_CREATE_SQL = 
     "create table " + DATABASE_TABLE 
     + " (\"" + KEY_ACCID + "\" integer primary key autoincrement, \"" 
     + KEY_USER + "\" string not null, \"" 
     + KEY_PASS + "\" string not null, \"" 
     + KEY_ACC + "\" string not null" 
     + ")"; 
} 
+0

Добро пожаловать. Если кто-то правильно ответил на ваш вопрос, не забывайте его на рынке как «принятый ответ», чтобы закрыть тему – W0rmH0le

0

Следуйте этим stepes, чтобы исправить вашу проблему, если у вас еще есть ошибки:

  1. Установить драйвер USB (можно легко скачать с сайта производителя)
  2. Проверка на USB Debugging (в мобильном телефоне) и Сервис-> Включить интеграцию (в Android SDK)
  3. Подключите устройство, сначала Снимите отметку, а затем Проверьте USB Debugging (в мобильном телефоне) будет отображаться диалоговое окно для подтверждения авторизации (работает для меня)
Смежные вопросы