2012-04-02 54 views
0

嗨即時通訊代碼無法確定問題。它編譯得很好,但當我的應用程序啓動並訪問時,應用程序崩潰。當我編輯editText代碼行時,應用程序運行得很好。得到的錯誤是從不使用局部變量。我已經完成了,並盡我所能去看到有關我的問題的類似主題,但沒有找到任何可能的幫助。這是下面的代碼我的工作:聲明editText時未使用局部變量java

public class AddNewTask extends Activity implements OnClickListener { 

EditText name, date; 

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

    // set up click listeners for all the buttons 
    View new_task_priority_button = 
       findViewById(R.id.new_task_priority_button); 
    new_task_priority_button.setOnClickListener(this); 

    View addTask_button = findViewById(R.id.addTask_button); 
    addTask_button.setOnClickListener(this); 

    View cancel_button = findViewById(R.id.cancel_button); 
    cancel_button.setOnClickListener(this); 

    View View_button = findViewById(R.id.View_button); 
    View_button.setOnClickListener(this); 

    final EditText name = (EditText)findViewById(R.id.task_name); 
    final EditText date = (EditText)findViewById(R.id.date); 
} 

public void onClick(View arg0){ 

    switch (arg0.getId()){ 
    case R.id.new_task_priority_button: 
     OpenPriorityDialog(); 
     break;   
    case R.id.View_button: 
     break;  
    case R.id.addTask_button: 
     break;   
    case R.id.cancel_button: 
     break; 
    } 
} 

這些行導致從我的主菜單accesed時,我的程序崩潰,sqlName和sqlDate想出了一個錯誤信息,說從來沒有使用局部變量,但我已經宣佈他們以上。

final EditText name = (EditText)findViewById(R.id.task_name); 
    final EditText date = (EditText)findViewById(R.id.date); 

如果有人可以幫助我,或點我在正確的方向,如果你宣佈在佈局XML文件中的TASK_NAME和TASK_NAME爲EditText上我會很感激

回答

1

你能檢查?如果你還沒有聲明爲EditText,你會得到一個classcast異常。

2

問題是你有2個位置聲明的變量。試試這個:

final EditText name, date; 

@Override 
public void onCreate(Bundle savedInstanceState){ 
     //Keep same stuff here 

     name = (EditText)findViewById(R.id.task_name); 
     date = (EditText)findViewById(R.id.date); 
} 

這將工作,因爲最終變量被允許設置一次,而onCreate()只被調用一次。還有其他解決方案,但本質上你是在本地聲明一個變量,它已經在類中聲明瞭。所以它忽略了這個類的聲明,並且創建了它自己的局部變量。