Обновление: Исправлено, это было из-за отсутствия свойств в представлениях, и я не знал, как работать с отладчиком:)
Я действительно новичок в Android. Я только что закончил учебник "Блокнот" и делаю что-то подобное (большая часть кода точно такая же). Последовательность событий, которые я переживаю:
GoalEdit.onCreate
и получаю следующие предупреждения: setContentView
в GoalEdit.onCreate
- после этого: Соответствующий код приведен ниже:
GoalsList.java
/**
* Add a menu to this activity
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, INSERT_ID, 0, R.string.menu_insert);
return true;
}
/**
* Catch the menuItemSelected event
*/
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case INSERT_ID:
createGoal();
return true;
}
return super.onMenuItemSelected(featureId, item);
}
/**
* Open the Edit activity to create a new goal
*/
private void createGoal() {
Intent i = new Intent(this, GoalEdit.class);
startActivityForResult(i, ACTIVITY_CREATE);
}
GoalEdit.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mDbGoals = new GoalDbTable(this);
mDbGoals.open();
setContentView(R.layout.goal_edit);
mName = (EditText) findViewById(R.id.name);
Button finishBtn = (Button) findViewById(R.id.finish);
mRowId = (savedInstanceState == null) ? null :
(Long) savedInstanceState.getSerializable(GoalDbTable.KEY_ROWID);
if (mRowId == null) {
Bundle extras = getIntent().getExtras();
mRowId = (extras != null) ? extras.getLong(GoalDbTable.KEY_ROWID)
: null;
}
populateFields();
finishBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setResult(RESULT_OK);
finish();
}
});
}
private void populateFields() {
if (mRowId != null) {
Cursor goal = mDbGoals.find(mRowId);
startManagingCursor(goal);
mName.setText(goal.getString(
goal.getColumnIndexOrThrow(GoalDbTable.KEY_NAME)));
}
}
@Override
protected void onResume() {
super.onResume();
populateFields();
}
Я чувствую, что ошибка заключается в том, что он не может найти GoalEdit (хотя это, очевидно, может). Есть ли в моем коде какие-либо очевидные фубары (или другие вещи, которые я должен проверить)?
Изменить: Выяснилось, как использовать отладчик немного лучше, пришлось еще несколько раз возобновлять резюме, чтобы показать исключение.
Исключения
ERROR/AndroidRuntime(741):
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.rossmasters.mygoals/com.rossmasters.mygoals.GoalEdit}:
java.lang.RuntimeException:
Binary XML file line #9: You must supply a layout_width attribute.
Я не уверен, какой файл ссылается, однако я добавил layout_width's
для каждого элемента.
Росс включит ваш logcat, и вы получите свою проблему,
Окно > Показать вид > Другое > Android > Logcat
возможно, вы, вероятно, пропустили свойство в своем макете target_edit.xml