0

画面をタッチすると新しいインテントが呼び出されるアプリを作成しようとしています。ビュー クラスでタッチ イベントをキャッチするコードがあります。新しいインテント Intent(this, cYesNoDisplay.class); を作成しようとすると、コンストラクターが未定義であるというエラーが表示されます。コンストラクターがビューの基本クラスではなく、Activity クラスで定義されていると想定していますか?

これを行う方法について混乱しています。インテント クラスのメンバーである View クラスを何らかの方法で呼び出す方法はありますか???? まだJavaを学んでいるのに、これを行うには理由があるに違いないと思います。テッド

4

2 に答える 2

4

あなたが問題の中にいるViewクラスについてのあなたの評価は正しいです。それを機能させるには、次のようにします。

Intent i = new Intent(NameOfYourActivity.this, cYesNoDisplay.class);

[NameOfYourActivity] を、あなたが参加しているアクティビティの名前に置き換えます。

編集:あなたがしていたことを誤解したかもしれません。実際に独自の View クラスを構築し、onTouch() をオーバーライドしている場合は、実際には少し異なる方法で行う必要があります。

まだ持っていない場合は、次を追加します。

Context ctx;

あなたのクラス宣言に。

コンストラクターで、宣言した ctx 参照にパラメーターとして渡されるコンテキストを格納するように変更します。

public [ClassName] (Context c){
    this.ctx = c;
}

次に、 onTouch() 内で次のようにします。

Intent i = new Intent(ctx, cYesNoDisplay.class);
ctx.startActivity();

再度編集:使用する必要がある理由ctx.startActivity(i);は、startActivity() が Context のメソッドであるためです。アクティビティ コンテキストであるため、アクティビティ内から呼び出すときに、その前に何も配置する必要はありません。ただし、別のクラスの「内部」にいる場合は、コンテキストへの参照を使用してメソッドを呼び出す必要があります。

于 2012-06-07T17:53:18.787 に答える
1

これを使って 。これは私のプロジェクトではうまくいきます。

Intent i = new Intent(NameOfYourActivity.this, cYesNoDisplay.class); startActivity(i);

于 2013-01-09T08:37:32.700 に答える