0

我在我的 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)
4

3 回答 3

1

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

于 2012-09-29T00:36:48.060 回答
0

我认为意图得到错误的上下文,因为 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));
}
于 2012-09-28T23:52:20.497 回答
0

这是您的错误的关键行:

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

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

于 2012-09-28T23:56:44.710 回答