声明editText java时未使用的局部变量

时间:2012-04-02 19:33:30

标签: java android eclipse android-edittext

我很难用我的代码确定问题。它编译得很好,但在我的应用程序中启动和访问时,应用程序崩溃了。当我编辑editText代码行时,应用程序运行完全正常。错误是get是从不使用局部变量。我已经完成并且看起来我可以看到有关我的问题的类似主题,但没有找到任何可以帮助的东西。以下是我正在处理的以下代码:

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;
    }
}

这些行导致我的程序在从主菜单中加入时崩溃,sqlName和sqlDate会出现一条错误消息,指出局部变量从未使用但我已在上面声明过。

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

如果有人能帮助我或指出我正确的方向,我将非常感激

2 个答案:

答案 0 :(得分: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()仅被调用一次。还有其他解决方案,但基本上你是在本地声明一个变量,它已经在类范围内声明。所以它忽略了类中的声明,只是创建了它自己的局部变量。

答案 1 :(得分:1)

您是否可以检查是否在layout xml文件中将task_name和task_name声明为EditText?如果您尚未声明为EditText,则会收到一个转发例外。