2013-05-07 53 views
1

我得到一個錯誤與我的代碼,我不能運行我的項目,除非我添加代碼到我的R.Java,但我不能將代碼添加到R.Java,它會自動恢復它生成的版本。不能運行項目,除非添加代碼到R.java

VewTask.java

package com.example.androidhive; 

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

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class ViewTask extends Activity { 
    protected TaskerDbHelper db; 
    List<Task> list; 
    MyAdapter adapt; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_view_task); 
     db = new TaskerDbHelper(this); 
     list = db.getAllTasks(); 
     adapt = new MyAdapter(this, R.layout.list_inner_view, list); 
     ListView listTask = (ListView) findViewById(R.id.listView1); 
     listTask.setAdapter(adapt); 
    } 

    public void addTaskNow(View v) { 
     EditText t = (EditText) findViewById(R.id.editText1); 
     String s = t.getText().toString(); 
     if (s.equalsIgnoreCase("")) { 
      Toast.makeText(this, "enter the task description first!!", 
        Toast.LENGTH_LONG); 
     } else { 
      Task task = new Task(s, 0); 
      db.addTask(task); 
      Log.d("tasker", "data added"); 
      t.setText(""); 
      adapt.add(task); 
      adapt.notifyDataSetChanged(); 
     } 

    } 

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

    private class MyAdapter extends ArrayAdapter<Task> { 

     Context context; 
     List<Task> taskList = new ArrayList<Task>(); 
     int layoutResourceId; 

     public MyAdapter(Context context, int layoutResourceId, 
       List<Task> objects) { 
      super(context, layoutResourceId, objects); 
      this.layoutResourceId = layoutResourceId; 
      this.taskList = objects; 
      this.context = context; 
     } 

     /** 
     * This method will DEFINe what the view inside the list view will 
     * finally look like Here we are going to code that the checkbox state 
     * is the status of task and check box text is the task name 
     */ 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      CheckBox chk = null; 
      if (convertView == null) { 
       LayoutInflater inflater = (LayoutInflater) context 
         .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       convertView = inflater.inflate(R.layout.list_inner_view, 
         parent, false); 
       chk = (CheckBox) convertView.findViewById(R.id.chkStatus); 
       convertView.setTag(chk); 

       chk.setOnClickListener(new View.OnClickListener() { 

        public void onClick(View v) { 
         CheckBox cb = (CheckBox) v; 
         Task changeTask = (Task) cb.getTag(); 
         changeTask.setStatus(cb.isChecked() == true ? 1 : 0); 
         db.updateTask(changeTask); 
         Toast.makeText(
           getApplicationContext(), 
           "Clicked on Checkbox: " + cb.getText() + " is " 
             + cb.isChecked(), Toast.LENGTH_LONG) 
           .show(); 
        } 

       }); 
      } else { 
       chk = (CheckBox) convertView.getTag(); 
      } 
      Task current = taskList.get(position); 
      chk.setText(current.getTaskName()); 
      chk.setChecked(current.getStatus() == 1 ? true : false); 
      chk.setTag(current); 
      Log.d("listener", String.valueOf(current.getId())); 
      return convertView; 
     } 

    } 

} 

我的錯誤是在onCreateOptionsMenu():

getMenuInflater().inflate(R.menu.activity_view_task, menu); 

和getView()

chk = (CheckBox) convertView.findViewById(R.id.chkStatus); 

activity_view_task.xml

<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" 
    tools:context=".ViewTask" > 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:ems="10" > 

     <requestFocus /> 
    </EditText> 


    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginRight="14dp" 
     android:text="@string/button" 
     android:onClick="addTaskNow"/> 


    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/button1" > 
    </ListView> 

</RelativeLayout> 

這是我其他的XML文件,其中包括複選框list_inner_view.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
    <CheckBox 
     android:id="@+id/checkBox1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:text="CheckBox" /> 

</RelativeLayout> 

具體的錯誤消息菜單和chkStatus說:「菜單不能得到解決或不是場」和「chkStatus不能已解決或不是字段「

+0

activity_view_task.xml在哪裏? – John 2013-05-07 01:54:20

+0

另外,你得到的錯誤究竟是什麼?發佈LogCat。 – MarsAtomic 2013-05-07 01:56:26

+0

@John更新錯誤和xml文件 – user12074577 2013-05-07 02:02:29

回答

1

嘗試項目 - >清理...->清理您的項目。 R.java應該重新創建,並且希望能夠解決您的問題。

+0

試過了,沒有做任何事情。 – user12074577 2013-05-07 02:02:58

+0

@ user12074577首先,你是否在res/menu /中有一個名爲'activity_view_task.xml'的文件?其次,你從未在你的xml中聲明過'',但你試圖用'findViewById'找到它,這將返回一個空指針,因爲它不存在。 – TronicZomB 2013-05-07 02:06:55

+0

至少從你所表明的是我可以推論出來的。 – TronicZomB 2013-05-07 02:07:17

相關問題