2017-02-22 50 views
-1

我想從http://www.codebind.com/android-tutorials-and-examples/android-sqlite-tutorial-example/ 中學習Android SQLite,但在運行我的android studio中的代碼時,我不斷獲取紅色,其中顯示 無法解析符號操作設置廣告無法解析菜單。 這裏是我的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="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"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Name" 
     android:id="@+id/textView" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Surname" 
     android:id="@+id/textView2" 
     android:layout_below="@+id/editText_name" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Marks" 
     android:id="@+id/textView3" 
     android:layout_below="@+id/editText_surname" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/editText_name" 
     android:layout_alignTop="@+id/textView" 
     android:layout_toRightOf="@+id/textView" 
     android:layout_toEndOf="@+id/textView" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/editText_surname" 
     android:layout_alignTop="@+id/textView2" 
     android:layout_toRightOf="@+id/textView2" 
     android:layout_toEndOf="@+id/textView2" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/editText_Marks" 
     android:layout_below="@+id/editText_surname" 
     android:layout_toRightOf="@+id/textView3" 
     android:layout_toEndOf="@+id/textView3" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Add Data" 
     android:id="@+id/button_add" 
     android:layout_below="@+id/editText_Marks" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="76dp" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="View All" 
     android:id="@+id/button_viewAll" 
     android:layout_above="@+id/button_update" 
     android:layout_centerHorizontal="true" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Update" 
     android:id="@+id/button_update" 
     android:layout_below="@+id/button_add" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 


    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Delete" 
     android:id="@+id/button_delete" 
     android:layout_centerVertical="true" 
     android:layout_below="@+id/button_viewAll" 
     android:layout_alignLeft="@+id/button_viewAll" 
     android:layout_alignStart="@+id/button_viewAll" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="id" 
     android:id="@+id/textView_id" 
     android:layout_below="@+id/editText_Marks" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/editText_id" 
     android:layout_alignTop="@+id/textView_id" 
     android:layout_toRightOf="@+id/textView3" 
     android:layout_toEndOf="@+id/textView3" /> 

</RelativeLayout> 

,這裏是MainActivity.java

package com.example.user.sqliteapp; 
import com.example.user.sqliteapp.R; 
import android.app.AlertDialog; 
import android.database.Cursor; 
import android.support.v7.app.ActionBarActivity; 
import android.widget.TextView; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.text.Editable; 
import android.view.View; 
import android.widget.CheckBox; 
import android.widget.EditText; 

import android.widget.EditText; 
import android.widget.Toast; 
import android.content.Context; 
import android.content.Intent; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 

import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 

import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListView; 

import java.util.ArrayList; 
import java.util.List; 

import android.support.v7.app.AppCompatActivity; 


import com.google.android.gms.appindexing.Action; 
import com.google.android.gms.appindexing.AppIndex; 
import com.google.android.gms.appindexing.Thing; 
import com.google.android.gms.common.api.GoogleApiClient; 

import java.text.NumberFormat; 

import static com.example.user.sqliteapp.R.*; 
import static com.example.user.sqliteapp.R.id.*; 
import static com.example.user.sqliteapp.R.id.textView; 


public class MainActivity extends AppCompatActivity { 

    Databasehelper myDb; 
    EditText editName,editSurname,editMarks ,editTextId; 
    Button btnAddData; 
    Button btnviewAll; 
    Button btnDelete; 

    Button btnviewUpdate; 
    private GoogleApiClient client; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(layout.activity_main); 
     myDb = new Databasehelper(this); 

     editName = (EditText) findViewById(id.editText_name); 
     editSurname = (EditText) findViewById(id.editText_surname); 
     editMarks = (EditText) findViewById(id.editText_Marks); 
     editTextId = (EditText) findViewById(id.editText_id); 
     btnAddData = (Button) findViewById(id.button_add); 
     btnviewAll = (Button) findViewById(id.button_viewAll); 
     btnviewUpdate = (Button) findViewById(id.button_update); 
     btnDelete = (Button) findViewById(id.button_delete); 
     AddData(); 
     viewAll(); 
     UpdateData(); 
     DeleteData(); 
     // ATTENTION: This was auto-generated to implement the App Indexing API. 
     // See https://g.co/AppIndexing/AndroidStudio for more information. 
     client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); 
    } 

    public void DeleteData() { 
     btnDelete.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Integer deletedRows = myDb.deleteData(editTextId.getText().toString()); 
         if (deletedRows > 0) 
          Toast.makeText(MainActivity.this, "Data Deleted", Toast.LENGTH_LONG).show(); 
         else 
          Toast.makeText(MainActivity.this, "Data not Deleted", Toast.LENGTH_LONG).show(); 
        } 
       } 
     ); 
    } 

    public void UpdateData() { 
     btnviewUpdate.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         boolean isUpdate = myDb.updateData(editTextId.getText().toString(), 
           editName.getText().toString(), 
           editSurname.getText().toString(), editMarks.getText().toString()); 
         if (isUpdate == true) 
          Toast.makeText(MainActivity.this, "Data Update", Toast.LENGTH_LONG).show(); 
         else 
          Toast.makeText(MainActivity.this, "Data not Updated", Toast.LENGTH_LONG).show(); 
        } 
       } 
     ); 
    } 

    public void AddData() { 
     btnAddData.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         boolean isInserted = myDb.insertData(editName.getText().toString(), 
           editSurname.getText().toString(), 
           editMarks.getText().toString()); 
         if (isInserted == true) 
          Toast.makeText(MainActivity.this, "Data Inserted", Toast.LENGTH_LONG).show(); 
         else 
          Toast.makeText(MainActivity.this, "Data not Inserted", Toast.LENGTH_LONG).show(); 
        } 
       } 
     ); 
    } 

    public void viewAll() { 
     btnviewAll.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Cursor res = myDb.getAllData(); 
         if (res.getCount() == 0) { 
          // show message 
          showMessage("Error", "Nothing found"); 
          return; 
         } 

         StringBuffer buffer = new StringBuffer(); 
         while (res.moveToNext()) { 
          buffer.append("Id :" + res.getString(0) + "\n"); 
          buffer.append("Name :" + res.getString(1) + "\n"); 
          buffer.append("Surname :" + res.getString(2) + "\n"); 
          buffer.append("Marks :" + res.getString(3) + "\n\n"); 
         } 

         // Show all data 
         showMessage("Data", buffer.toString()); 
        } 
       } 
     ); 
    } 

    public void showMessage(String title, String Message) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setCancelable(true); 
     builder.setTitle(title); 
     builder.setMessage(Message); 
     builder.show(); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 

    } 

    /** 
    * ATTENTION: This was auto-generated to implement the App Indexing API. 
    * See https://g.co/AppIndexing/AndroidStudio for more information. 
    */ 
    public Action getIndexApiAction() { 
     Thing object = new Thing.Builder() 
       .setName("Main Page") // TODO: Define a title for the content shown. 
       // TODO: Make sure this auto-generated URL is correct. 
       .setUrl(Uri.parse("http://[ENTER-YOUR-URL-HERE]")) 
       .build(); 
     return new Action.Builder(Action.TYPE_VIEW) 
       .setObject(object) 
       .setActionStatus(Action.STATUS_TYPE_COMPLETED) 
       .build(); 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 

     // ATTENTION: This was auto-generated to implement the App Indexing API. 
     // See https://g.co/AppIndexing/AndroidStudio for more information. 
     client.connect(); 
     AppIndex.AppIndexApi.start(client, getIndexApiAction()); 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 

     // ATTENTION: This was auto-generated to implement the App Indexing API. 
     // See https://g.co/AppIndexing/AndroidStudio for more information. 
     AppIndex.AppIndexApi.end(client, getIndexApiAction()); 
     client.disconnect(); 
    } 
} 

和Databasehelper.java p

ackage com.example.user.sqliteapp; 

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


/** 
* Created by User on 22-Feb-17. 
*/ 
public class Databasehelper extends SQLiteOpenHelper { 
    public static final String DATABASE_NAME = "Student.db"; 
    public static final String TABLE_NAME = "student_table"; 
    public static final String COL_1 = "ID"; 
    public static final String COL_2 = "NAME"; 
    public static final String COL_3 = "SURNAME"; 
    public static final String COL_4 = "MARKS"; 

    public Databasehelper(Context context) { 
     super(context, DATABASE_NAME, null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,SURNAME TEXT,MARKS INTEGER)"); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME); 
     onCreate(db); 
    } 

    public boolean insertData(String name,String surname,String marks) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(COL_2,name); 
     contentValues.put(COL_3,surname); 
     contentValues.put(COL_4,marks); 
     long result = db.insert(TABLE_NAME,null ,contentValues); 
     if(result == -1) 
      return false; 
     else 
      return true; 
    } 

    public Cursor getAllData() { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor res = db.rawQuery("select * from "+TABLE_NAME,null); 
     return res; 
    } 

    public boolean updateData(String id,String name,String surname,String marks) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(COL_1,id); 
     contentValues.put(COL_2,name); 
     contentValues.put(COL_3,surname); 
     contentValues.put(COL_4,marks); 
     db.update(TABLE_NAME, contentValues, "ID = ?",new String[] { id }); 
     return true; 
    } 

    public Integer deleteData (String id) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     return db.delete(TABLE_NAME, "ID = ?",new String[] {id}); 
    } 
} 
+0

請不要發佈比必要的代碼更多的代碼。我們無需爲這兩個錯誤查看整個項目。 –

+0

請檢查是否有菜單佈局和內部菜單佈局,您有一個id「action_settings」。清理完項目後請重試。 –

+0

在你的「菜單」文件夾中檢查menu_main xml res-> menu-> menu_main – user2025187

回答

0

有很多原因,你可以嘗試同樣的:

您也可以在Android Studio中嘗試此操作。轉到工具 - > Android - >點擊'用gradle同步項目文件'。