有没有办法在另一个类中使用一个类(Activity)的方法?

时间:2013-09-10 21:15:21

标签: android android-intent

从我之前的帖子开始,我正在努力让一些按钮正常运行。其中一些按钮呼叫某些人。例如 - 母亲

我在另一个名为“DialHomeDevice”的文件中有实际的拨号代码 - 是的,我喜欢星际之门。

我试图在呼叫意图中访问该方法,这是我到目前为止:

        callMomBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub  
            Intent dialMom = new Intent(MainActivity.this, DHD.dialMom());
            startActivity(dialMom.);
        }
    });

DHD已被声明在文件的顶部,如此

    private DialHomeDevice DHD = new DialHomeDevice();

这里也是DHD方法的代码:

    public void dialMom() {
    prefs = getSharedPreferences(Constants.PREF_NAME, Context.MODE_PRIVATE);
    Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"
            + prefs.getLong(Constants.momNumber, 411)));
    startActivity(callIntent);
}

常量就是我存储数字的地方。

现在让我感到困惑的是,我无法在意图内部使用DHD.dialMom()进行调用。 解决这个问题的最佳方法是什么。

Intent dialMom = new Intent(MainActivity.this,DHD.dialMom());给出以下错误: 构造函数Intent(MainActivity,void)未定义

和startActivity(callIntent);给我这个错误: Activity类型中的方法startActivity(Intent)不适用于参数(Class)

1 个答案:

答案 0 :(得分:0)

要纠正构造函数错误,您只需要在类中添加一个空的公共构造函数。

public DialHomeDevice(){}

虽然使用意图仍然不是最佳解决方案。单身人士在这里工作得很好,并允许你随时打电话。

要使用它,您只需拨打DialHomeDevice.newInstance(someObject)DialHomeDevice.getInstance().desiredMethod()即可。需要注意的是,如果您确保一次只使用一个实例并且线程处理得当,这只能正常工作。

public class DialHomeDevice {
    private static DialHomeDevice ourInstance = null;
    private Activity context;
    private Object objAnything;

    public DialHomeDevice(){
        if ( ourInstance == null ) { ourInstance = this; }
    }

    public static DialHomeDevice newInstance(Object objAnything) {
        if ( ourInstance == null ) {
            ourInstance = new DialHomeDevice();
        }
        ourInstance.objAnything = objAnything;
        return ourInstance;
    }

    public static DialHomeDevice getInstance(){
        if ( ! isInstantiated() ) { ourInstance = new DialHomeDevice(); }
        return ourInstance;
    }

    static boolean isInstantiated(){
        return (ourInstance != null);
    }

    static void setObjAnything(Object objAnything){
        outInstance.objAnything = objAnything;
    }
}