Безопасно ли редактировать r.java в моем случае? - PullRequest
0 голосов
/ 22 января 2012

У меня есть эта строка кода:

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

, которая дает следующую ошибку:

id cannot be resolved or is not a field

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

public static final class id {
}

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

Ответы [ 4 ]

1 голос
/ 22 января 2012

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

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

0 голосов
/ 22 января 2012

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

Так что если у вас есть Button в вашем main.xmllayout, с идентификатором "view", вы должны сделать следующее в вашем 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 
        }
    }); 
}
0 голосов
/ 22 января 2012

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

0 голосов
/ 22 января 2012

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

...