0

ボタンがクリックされたときにMin.Javaで実行されるファイルDuality.javaからメソッドを取得しようとしています。以下は2つのファイルと、私が現在実行しようとしていることですが、機能していません。Min.java内でボタンがクリックされたときにメソッドduality()を実行するにはどうすればよいですか?

Duality.java

package com.android.control;

import android.util.Log;
import com.map.AppName.R;

public class duality {

    public void duality(){
       Log.e("Did It Run","Yes it ran");
    }
}

Min.java

package com.android.control;

import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;

import com.map.AppName.R;

public class Min extends LinearLayout {

    Button but;
    private final int ELEMENT_HEIGHT = 60;
    private final int ELEMENT_WIDTH = 80;;
    private final int TEXT_SIZE = 30; 

    public Min( Context context, AttributeSet attributeSet ) {
        super(context, attributeSet);   

        this.setLayoutParams( new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ) );
        LayoutParams elementParams = new LinearLayout.LayoutParams( ELEMENT_WIDTH, ELEMENT_HEIGHT );

        createBut( context );

        addView( but, elementParams );
    }

private void createButton( Context context){
        but = new Button( context );
        but.setTextSize( TEXT_SIZE );
        but.setText( "Go" );

        but.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                 Duality duality = new duality();

            }
        });
}
}
4

3 に答える 3

1

クラスのインスタンスを構築しているだけで、メソッドをduality呼び出していません。duality()

これは、そのメソッドをコンストラクターにしたかったためかもしれませんが、そうではなく、void戻り値の型を指定したため、従来のメソッドにすぎません。

(ちなみに、Java では大文字で始まるクラス名を付けるのが慣習です。class を呼び出した場合Duality、2 つを混同する可能性は少ないかもしれませんが、偶発的な非コンストラクタの問題は依然として残っています。 .)

于 2012-05-10T10:05:58.787 に答える
0

Minとの両方dualitycom.android.controlパッケージに含まれているため、インポートなしでお互いを確認できるはずです。

クラス名は大文字にすることをお勧めします。実際、メソッドはクラスと同じ名前であるため、コンストラクター名と競合している可能性があります。私はこれを提案します:

public class Duality {

    public void duality(){
       Log.e("Did It Run","Yes it ran");
    }
}

...

but.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
         Duality d = new Duality();
         d.duality();
    }
});
于 2012-05-10T10:04:06.013 に答える
0
  1. クラス名とファイル名で大文字と小文字の組み合わせが同じであることを確認してください。

  2. コンストラクターを呼び出したい場合は、次から void を削除します。

    public void duality()

  3. コンストラクタではなく関数を使用することになっている場合は、次を使用して呼び出します。

    object_name.duality();

  4. createBut() を呼び出して、createButton() のコードを指定しています。これは、コピーの貼り付けの間違いですか?

于 2012-05-10T10:13:21.237 に答える