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

R ファイルを gen Eclipse フォルダーから削除してみてください。その後、再生成され、問題が解決されることを願っています。

于 2012-09-29T00:36:48.060 に答える
0

これはエラーの重要な行です:

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

イベントが発生しているが、ターゲットがそこにないか、ハンドラーが期待する場所にない可能性があります。メソッドをチェックし続けますが、正当な「見つからない」状況がないことも確認してください。

于 2012-09-28T23:56:44.710 に答える
0

Stretch.this は onClickListener 内に含まれてはならないため、インテントが間違ったコンテキストを取得していると思います。アクティビティで 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 に答える