2014-11-24 118 views
0

我剛開始我的第一個Android APK項目,所以這可能是真正的白晝問題。我正在考慮製作第一個應用程序,所以我閱讀som文章並決定遵循一個教程來製作簡單的ToDoList。我按照教程的所有步驟,我做了如下代碼:Android - 無法解析符號

package sk.example.todolist; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.ContentValues; 
import android.content.DialogInterface; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.EditText; 

import sk.melnikovic.michal.todolist.db.TaskContract; 
import sk.melnikovic.michal.todolist.db.TaskDBHelper; 


public class MainActivity extends Activity { 

    private TaskDBHelper helper; 


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

     SQLiteDatabase sqlDB = new TaskDBHelper(this).getWritableDatabase(); 
     Cursor cursor = sqlDB.query(TaskContract.TABLE, 
       new String[]{TaskContract.Columns.TASK}, 
       null,null,null,null,null); 

     cursor.moveToFirst(); 
     while(cursor.moveToNext()) { 
      Log.d("MainActivity cursor", 
        cursor.getString(
          cursor.getColumnIndexOrThrow(
            TaskContract.Columns.TASK))); 
     } 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.action_add_task: 
       AlertDialog.Builder builder = new AlertDialog.Builder(this); 
       builder.setTitle("Add a task"); 
       builder.setMessage("What do you want to do?"); 
       final EditText inputField = new EditText(this); 
       builder.setView(inputField); 
       builder.setPositiveButton("Add", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 
         String task = inputField.getText().toString(); 
         Log.d("MainActivity",task); 

         TaskDBHelper helper = new TaskDBHelper(MainActivity.this); 
         SQLiteDatabase db = helper.getWritableDatabase(); 
         ContentValues values = new ContentValues(); 

         values.clear(); 
         values.put(TaskContract.Columns.TASK,task); 

         db.insertWithOnConflict(TaskContract.TABLE,null,values, 
           SQLiteDatabase.CONFLICT_IGNORE); 

        } 
       }); 

       builder.setNegativeButton("Cancel", null); 

       builder.create().show(); 
       return true; 

      default: 
       return false; 
     } 
    } 
} 

看起來更好,然後對我好。問題是我收到一些錯誤。 第一個錯誤 - 在onCreate方法 - >(R.layout.main) - 無法解析符號主要 二錯誤 - 在onOptionItemSelected - >情況下R.id.action_add_task: - 無法解析符號action_add_task

傢伙我的問題是,你可以導航我如何解決這個問題,或者給我一些未來的建議。我不要求你免費的編碼,只是希望一些不錯的人誰可以理解的開始總是最難:)

編輯: task_view.xml:

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Text" 
     android:id="@+id/taskTextView" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:textSize="20dp" 
     android:layout_toLeftOf="@+id/doneButton" 
     android:layout_alignBottom="@+id/doneButton" 
     android:gravity="center_vertical" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Done" 
     android:id="@+id/doneButton" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" /> 
</RelativeLayout> 
+0

哪裏是你的進口資源包{} your.app.pkg.name.R? – 2014-11-24 19:52:10

+0

setContentView(R.layout.activity_main);這是工作,:) – 2014-11-24 19:56:25

+0

你設法解決這個問題嗎?爲什麼你有兩個'onCreate()'方法? – 2014-11-24 20:48:01

回答

1

兩件事情:

  1. 由於您的佈局名稱爲activity_main.xml而不是main.xml,請替換setContentView()中的名稱。

  2. 你需要通過覆蓋onCreateOptionsMenu誇大你的菜單項:

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
        MenuInflater inflater = getMenuInflater(); 
        inflater.inflate(R.menu.yourMenuFile, menu); 
        return super.onCreateOptionsMenu(menu); 
    } 
    
+0

再次感謝Shobit Puri,你對於setContentView絕對正確。感謝您在第二部分的建議。 你怎麼能找到一點時間來檢查爲什麼我得到一個與action_add_task錯誤? – 2014-11-24 21:24:09

+0

你可以發佈你的'task_view.xml'文件,以及你膨脹你的菜單文件的代碼嗎? – 2014-11-24 21:40:18

+0

編輯我的問題:) – 2014-11-24 21:43:48