无法在类中声明Cursor而不是MainActivity

时间:2016-02-04 04:55:31

标签: android cursor

我有类控制来通过Cursor获取sms数据,但是当我在类MainActivity中调用ReadSMS时出现问题,但我将所有代码从ReadSMS复制到MainActivity并运行,它将正常运行。

__call__

}

它注意到了问题:

a.count

更新:Mike M.'答案是解决我的问题

1 个答案:

答案 0 :(得分:1)

您显然已将ReadSMS作为AppCompatActivity子类,以便在您的IDE中解析getContentResolver()方法。这不起作用,因为您可能会在ReadSMS MainActivity中使用new创建Activity的实例,而Context则无法使用Activity {1}}将无法正确创建。

如果要将查询移动到单独的类,请不要使该类成为Context的后代。相反,在getListSMS()方法中传递getContentResolver(),您可以调用getContactName(),就像您在static方法中所做的那样。您也可以创建两个方法public class ReadSMS { public static TreeMap getListSMS(Context context) { ... Cursor cur = context.getContentResolver().query(smsUri, null, null, null, null); ... } public static String getContactName(Context context, String phoneNumber) { ... } } ,因此您无需创建类的实例来调用方法。

MainActivity

然后,在Map messages = ReadSMS.getListSMS(MainActivity.this); ... String name = ReadSMS.getContactName(MainActivity.this, phoneNumber); 中,你会这样称呼它们:

cmbfrmwarehouse.Focus() '' or cmbTowarehouse.Focus()