当我点击按钮时,我试图从文件Duality.java中获取一个在Min.Java中运行的方法。下面是两个文件以及我目前正在尝试做的事情,但这些文件无效。如何在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();
}
});
}
}
答案 0 :(得分:1)
您只是构建duality
类的实例 - 您没有在其上调用duality()
方法。
这可能是因为您希望该方法成为构造函数 - 但事实并非如此,因为您指定了void
返回类型,因此它只是一种传统方法。
(顺便说一句,在Java中传统上给出以大写字符开头的类名。如果你调用了你的类Duality
,你可能会把这两个混淆的可能性降低;尽管问题很严重偶然的非建设者仍然会站立。)
答案 1 :(得分:0)
Min
和duality
都在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();
}
});
答案 2 :(得分:0)
确保类名和文件名在名称中使用相同的大小写组合。
如果你想调用构造函数,请从
中删除voidpublic void duality()
如果它应该是一个函数而不是构造函数,请使用:
调用它object_name.duality();
你正在调用createBut()并给出了createButton()的代码..复制粘贴是错误的吗?