2012-01-21 4 views
0

У меня есть эта строка кода:Можно ли редактировать r.java в моем случае?

Button button = (Button) findViewById(R.id.view); 

Что дает следующее сообщение об ошибке:

id cannot be resolved or is not a field 

Эта ошибка логично, потому что у меня нет ничего, что нужно идентификатор в R.java еще, и, следовательно, Идентификатор отсутствует. Это будет сгенерировано при выполнении кода (потому что я делаю кнопки на onCreate(), и они получают идентификатор). Но Eclipse не позволит мне работать, прежде чем я исправлю проблему. Можно ли добавить эту строку кода в R.java:

public static final class id { 
} 

Или, может быть, есть еще одно соединение?

+0

Вы не можете редактировать R.java. Все, что вы редактируете, будет перезаписано. – Jrom

ответ

0

Нет. Все, что вы добавите в R.java, будет удалено при следующем построении. Это автоматически сгенерированный файл.

1

Если вы создаете кнопки в onCreate, они не добавляются к ресурсам. Ресурсы фиксируются с момента создания APK.

Наверняка, если вы создали кнопку, у вас уже есть объект Button, и не нужно ли искать его в ресурсах?

0

Вы не можете добавить R.java. Но если есть что-то, что вы хотите добавить, вы можете создать другой собственный файл (например, Rcustom.java), сохранить свои вещи в нем и импортировать его везде, где вы его используете.

+1

Ага, спасибо. Я думаю, это сработает. – Mavix

0

findViewById() используется, когда вы ссылаетесь на макет XML, который обычно устанавливается setContentView(), или завышен с LayoutInflater.

Так что если у вас есть Button в макете main.xml, с идентификатором «точки зрения», вы могли бы сделать следующее в вашем Activity:

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Button button = (Button) findViewById(R.id.view); 
    button.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Respond to click here 
     } 
    }); 
} 
Смежные вопросы