локальная переменная не используется при объявлении java editText - PullRequest
0 голосов
/ 02 апреля 2012

Привет, у меня проблемы с установкой проблемы с моим кодом.он прекрасно компилируется, но при запуске и доступе к нему в приложении происходит сбой.когда я редактирую строку кода editText, приложение работает совершенно нормально.Ошибка в том, что локальная переменная никогда не используется.Я сделал и посмотрел все, что мог, чтобы увидеть похожие темы, касающиеся моей проблемы, но не нашел ничего, что могло бы помочь.Вот следующий код, над которым я работаю:

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 ]

2 голосов
/ 02 апреля 2012

Проблема в том, что у вас есть переменные, объявленные в 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 голос
/ 02 апреля 2012

Можете ли вы проверить, объявили ли вы имя-задачи и имя-задачи как EditText в XML-файлах макета?Если вы не объявили как EditText, вы получите исключение classcast.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...