Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从另一个类获取片段的方法_Android_Class_Methods_Android Fragments - Fatal编程技术网

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); 但

我有一个Android应用程序,它使用片段。我还将学习一个教程来获取通话历史记录

我有一个由教程在链接中创建的类,但是现在我想从这个类中获取数据,并在我的一个片段中使用它

我试过以下的方法

    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活动?我的主要活动。它所做的一切都是为碎片充气,并控制碎片的标签