Запуск другого действия создает пустой экран и вылетает

1

Обновление: Исправлено, это было из-за отсутствия свойств в представлениях, и я не знал, как работать с отладчиком:)

Я действительно новичок в Android. Я только что закончил учебник "Блокнот" и делаю что-то подобное (большая часть кода точно такая же). Последовательность событий, которые я переживаю:

  • Отладка приложения
  • Нажмите "Меню", в котором есть правильные элементы.
  • Нажмите "Вставить", в котором откроется новый Activity (GoalEdit)
  • Я ударил точку останова в первой строке GoalEdit.onCreate и получаю следующие предупреждения:
    а. (ActivityManager) Тайм-аут запуска истек, отказавшись от блокировки слежения!
    б. (ActivityManager) Тайм-аут простоя активности для HistoryRecord {...}
  • У меня есть точка останова в setContentView в GoalEdit.onCreate - после этого:
    а. ActivityThread.perfo: Источник не найден.

Соответствующий код приведен ниже:

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 для каждого элемента.

  • 0
    Ross включит ваш logcat и вы поймете, в чем ваша проблема, Window> Show view> Other> Android> Logcat
  • 0
    Jorgesys: Да, верно. Кажется, проблема заключалась в том, что в представлениях отсутствовали layout_width. Думаю, мне нужно немного прочитать об использовании отладчика Eclipse :)
Показать ещё 4 комментария
Теги:
android-activity

1 ответ

1
Лучший ответ

Росс включит ваш logcat, и вы получите свою проблему,

Окно > Показать вид > Другое > Android > Logcat

возможно, вы, вероятно, пропустили свойство в своем макете target_edit.xml

Ещё вопросы

Сообщество Overcoder
Наверх
Меню