如何从单独的包调用方法:Android

时间:2012-05-10 10:02:40

标签: java android

当我点击按钮时,我试图从文件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();

            }
        });
}
}

3 个答案:

答案 0 :(得分:1)

您只是构建duality类的实例 - 您没有在其上调用duality()方法。

这可能是因为您希望该方法成为构造函数 - 但事实并非如此,因为您指定了void返回类型,因此它只是一种传统方法。

(顺便说一句,在Java中传统上给出以大写字符开头的类名。如果你调用了你的类Duality,你可能会把这两个混淆的可能性降低;尽管问题很严重偶然的非建设者仍然会站立。)

答案 1 :(得分: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();
    }
});

答案 2 :(得分:0)

  1. 确保类名和文件名在名称中使用相同的大小写组合。

  2. 如果你想调用构造函数,请从

    中删除void

    public void duality()

  3. 如果它应该是一个函数而不是构造函数,请使用:

    调用它

    object_name.duality();

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