从我之前的帖子开始,我正在努力让一些按钮正常运行。其中一些按钮呼叫某些人。例如 - 母亲
我在另一个名为“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)
答案 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;
}
}