【问题标题】:OnClick event is not starting a new activityOnClick 事件未开始新活动
【发布时间】:2012-09-28 23:44:54
【问题描述】:

我在我的 xml 布局中创建了一个按钮,然后使用 onClick 事件来处理按钮以启动新活动。出于某种原因,当我单击按钮时,应用程序崩溃了。任何想法为什么?

我之前成功地使用过这种方法来创建带有按钮的新活动。我不确定为什么这不起作用。

private Button view;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.stretchHow);
    view = (Button)findViewById(R.id.perfect);
    view.setOnClickListener(phase);
}

View.OnClickListener phase = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if(view.getId() == ((Button)v).getId()){
        Intent i = new Intent(Stretch.this, Perform.class);
        startActivity(i);
        }
    }
};

这是我得到的错误。

09-28 23:28:37.364: E/AndroidRuntime(275): FATAL EXCEPTION: main
09-28 23:28:37.364: E/AndroidRuntime(275): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.proj.fitness/org.proj.fitness.Perform}: android.content.res.Resources$NotFoundException: Resource ID #0x7f060073 type #0x12 is not valid
09-28 23:28:37.364: E/AndroidRuntime(275):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
09-28 23:28:37.364: E/AndroidRuntime(275):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)

【问题讨论】:

  • 有趣。请发布完整的logcat。还有Perform Activity 是什么样的?
  • 堆栈跟踪表明该错误与单击操作无关,而是源自您的 Perform 活动。更准确地说:看起来您正在混淆 ID。例如,您可能会在需要视图 id 的地方提供布局 id,反之亦然,或者可绘制对象或字符串等。
  • 我真的让它工作了。我用错误的标识符定义了我的 Perform.class。我将 contentView 设置为 Id 而不是布局。
  • 谢谢@MH。这是我的表演活动。

标签: android android-layout android-intent android-button


【解决方案1】:

尝试从 gen Eclipse 文件夹中删除 R 文件。然后它将重新生成,希望问题得到解决。

【讨论】:

    【解决方案2】:

    我认为意图是获取错误的上下文,因为 Stretch.this 不应该包含在 onClickListener 中。您可以尝试将其移至 Activity 中名为 startPerform 的另一个函数,使其看起来像这样:

    View.OnClickListener phase = new View.OnClickListener() {
    
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if(view.getId() == ((Button)v).getId()){
        Intent i = new Intent(Stretch.this, Perform.class);
        startActivity(i);
        }
    
    }
    };
    
    public void startPreform () 
    {
         startActivity(new Intent(this, Perform.class));
    }
    

    【讨论】:

    • Stretch.this 是有效的,我认为问题出在Perform 活动而不是 onClick 本身...
    • @user1588307 如果你自己解决了问题,你应该回答你自己的问题,不要接受不能解决你问题的答案。
    • @Max Rasguido。我试图回答我的问题,但它不允许我。
    【解决方案3】:

    这是你错误的关键:

    android.content.res.Resources$NotFoundException: Resource ID #0x7f060073 type #0x12 is not valid
    

    有可能事件正在触发,但目标不存在,或者处理程序期望它在哪里。请继续检查您的方法,但也要确保您没有合法的“未找到”情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多