我很难用我的代码确定问题。它编译得很好,但在我的应用程序中启动和访问时,应用程序崩溃了。当我编辑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);
如果有人能帮助我或指出我正确的方向,我将非常感激
答案 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,则会收到一个转发例外。