Android 从另一个类获取片段的方法
我有一个Android应用程序,它使用片段。我还将学习一个教程来获取通话历史记录 我有一个由教程在链接中创建的类,但是现在我想从这个类中获取数据,并在我的一个片段中使用它 我试过以下的方法Android 从另一个类获取片段的方法,android,class,methods,android-fragments,Android,Class,Methods,Android Fragments,我有一个Android应用程序,它使用片段。我还将学习一个教程来获取通话历史记录 我有一个由教程在链接中创建的类,但是现在我想从这个类中获取数据,并在我的一个片段中使用它 我试过以下的方法 int callsMade = new GetUsage().getCallDetails(); String callsmade = String.valueOf(callsMade); Log.e("Calls Made:", "Texts: " + callsmade); 但
int callsMade = new GetUsage().getCallDetails();
String callsmade = String.valueOf(callsMade);
Log.e("Calls Made:", "Texts: " + callsmade);
但是我在光标managedCursor行上不断得到一个错误NB:我已经将managedCursor更改为getContentResolver,因为managedCursor已被弃用,并且也得到了错误
我有什么地方做错了吗?你能想到我能改变吗
非常感谢你能提供的任何帮助
编辑:
getCallDetails的代码
public int getCallDetails()
{
StringBuffer sb = new StringBuffer();
Cursor callsCursor = getContentResolver().query( CallLog.Calls.CONTENT_URI,null, null,null, CallLog.Calls.DATE + " DESC");
//Cursor planCursor=PlansHelper.query("plans", null, null, null, null);
int name = callsCursor.getColumnIndex( CallLog.Calls.CACHED_NAME );
int number = callsCursor.getColumnIndex( CallLog.Calls.NUMBER );
int type = callsCursor.getColumnIndex( CallLog.Calls.TYPE );
int date = callsCursor.getColumnIndex( CallLog.Calls.DATE);
int duration = callsCursor.getColumnIndex( CallLog.Calls.DURATION);
int allduration = 0;
sb.append( "Call Details :");
while ( callsCursor.moveToNext() )
{
String phName = callsCursor.getString( name );
String phNumber = callsCursor.getString( number );
String callType = callsCursor.getString( type );
int callTypeCode = Integer.parseInt(callType);
String callDate = callsCursor.getString( date );
Date formatDate = new Date(Long.valueOf(callDate));
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String dateStr = sdf.format(formatDate);
String userdate = "18/03/2014";
//Date parseddate = sdf.parse(userdate1);
Calendar c = Calendar.getInstance();
try {
c.setTime(sdf.parse(userdate));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
c.add(Calendar.DATE, -5); // number of days to add
userdate = sdf.format(c.getTime()); // dt is now the new date
String callDuration = callsCursor.getString(duration);
float durationToFloat =Float.parseFloat(callDuration);
float durationToMins = durationToFloat/60;
int durationRounded = Math.round(durationToMins);
int callDurationMin = durationRounded;
if(callTypeCode==CallLog.Calls.OUTGOING_TYPE)
{
//if(dateStr.equals(userdate) || dateStr.equals(userdate1))
if(formatDate.after(c.getTime()))
{
sb.append("\nName:--- " + phName + "\nPhone Number:--- " + phNumber + " \nCall Date:--- " + dateStr
+ " \nCall duration in min :--- " + callDurationMin);
sb.append("\n----------------------------------");
allduration = allduration + callDurationMin;
Log.d(getClass().getSimpleName(), "Done");
}
}
}
sb.append("##" + allduration + "##");
getCalls.setText(sb.toString());
callsCursor.close();
return allduration;
}
更改行int callsMade=new GetUsage.getCallDetails;到下面的代码
Activity activity = getActivity();
if(activity instanceof GetUsage)
{
GetUsage myactivity = (GetUsage) activity;
myactivity.getCallDetails();
}
你能分享你的密码吗getCallDetails@Anthony对不起,我可能应该在一开始就补充这一点,而不是告诉叶看教程。刚刚加上去的。请注意:我实际上并不想要这个代码中的所有数据;只是通话的重复你添加了权限android.permission.READ_CONTACTS?我添加了。我可以运行活动本身没有问题,但是当我尝试将其调用到片段中时,应用程序crashesGetUsage是您的活动??非常感谢您在这方面的帮助,我非常感谢。我尝试了您建议的方法,但是if语句没有运行,我在它们的日志中添加了一条消息来尝试。这一行试图做什么,或者你知道为什么会发生这种情况吗?在哪个活动中,你正在膨胀这个片段?你的片段的Praint活动?我的主要活动。它所做的一切都是为碎片充气,并控制碎片的标签