Android - 无法解析符号

问题描述:

我刚开始我的第一个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. 由于您的布局名称为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