2014-11-24 4 views
0

Я просто запустил свой первый проект APK для Android, так что это, вероятно, действительно вопрос о нобе. Я думал о создании первого приложения, поэтому я читал статьи som и решил следовать одному учебнику, чтобы сделать простой ToDoList. Ater я следую всем шагам учебника, я сделал код как: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

Guys мой вопрос в том, можете ли вы ориентироваться на меня, как это исправить, или дать мне некоторые советы для будущего. Я не прошу вас для свободного кодирования, просто надеюсь, что на какой-то хороший человек, который может понять, что начало всегда труднее :)

EDIT: 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}? –

+0

setContentView (R.layout.activity_main); это работает, :) –

+0

Удалось ли вам это решить? Почему у вас есть два метода 'onCreate()'? –

ответ

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? –

+0

Можете ли вы разместить свой файл 'task_view.xml', а также код, в котором вы раздуваете свой файл меню? –

+0

Отредактировал мой вопрос :) –

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