0

正如我之前的帖子一样,我正在努力让一些按钮发挥作用。其中一些按钮会呼叫某些人。比如——妈妈

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

我正在尝试在调用意图中访问该方法,这是我到目前为止所拥有的:

        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) 不适用于参数(类)

4

1 回答 1

0

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

public DialHomeDevice(){}

尽管如此,使用意图仍然不是最好的解决方案。单身人士在这里工作得很好,并允许您随时调用它。

要使用它,您只需调用DialHomeDevice.newInstance(someObject)or 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;
    }
}
于 2013-09-10T21:35:01.950 回答