启动另一个活动会创建一个空白屏幕并崩溃

时间:2010-07-28 18:03:59

标签: android android-activity

  

更新:已修复,这是由于视图中缺少属性而我不知道如何使用调试器:)

我是Android新手。我刚刚完成了Notepad教程并且正在制作类似的东西(大部分代码完全相同)。我正在经历的一系列事件:

  1. 调试应用
  2. 点击菜单,其中包含正确的项目
  3. 点击“插入”,打开一个新的活动(GoalEdit)
  4. 我在GoalEdit.onCreate的第一行遇到断点并收到这些警告:
    一个。 (ActivityManager)启动超时已过期,放弃唤醒锁定! 湾(ActivityManager)HistoryRecord的活动空闲超时{...}
  5. 我在setContentView GoalEdit.onCreate处有一个断点 - 在此之后通过:
    一个。 ActivityThread.perfo:找不到来源。
  6. 相关代码如下:

    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(虽然它显然可以)。我的代码中是否有明显的fubar(或者我应该检查的其他内容)?

    编辑:想出如何更好地使用调试器,不得不再按几次简历来显示异常。

    例外

    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

1 个答案:

答案 0 :(得分:1)

Ross启用了logcat,你会得到你的问题,

  

窗口>显示视图>其他> Android>   logcat的

您可能会错过goal_edit.xml布局中的属性