0

我试图从文件 Duality.java 中获取一个方法,以便在单击按钮时在 Min.Java 中运行。以下是这两个文件以及我目前正在尝试做的事情,这是行不通的。在 Min.java 中单击按钮时,如何让方法 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");
    }
}

最小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,你可能不太可能混淆这两者;尽管意外的非构造函数的问题仍然存在.)

于 2012-05-10T10:05:58.787 回答
0

两者Minduality都在com.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:

    公共无效对偶()

  3. 如果它应该是 ba 函数而不是构造函数,请使用以下命令调用它:

    object_name.duality();

  4. 你调用 createBut() 并给出了 createButton() 的代码。这是复制粘贴的错误吗?

于 2012-05-10T10:13:21.237 回答