android – DateTime选择器FragmentManager异常

我已将GitHub中的以下库集成到我的项目中:

https://github.com/jjobes/SlideDateTimePicker

它已被很好地集成,但在执行时不起作用.
我创建了以下FragmetActivity,其中只有一个启动库的按钮.单击该按钮时,它会崩溃.活动设置为具有对话主题.

<activity
            android:name=".AlertDateTimePickerParentActivity"
            android:screenOrientation="landscape"
            android:theme="@style/Theme.AppCompat.Dialog"
            android:excludeFromRecents="true"/>

FragmetActivity:

/**
 * Created by MatthewW on 27/04/2018.
 */

import java.text.SimpleDateFormat;
import java.util.Date;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

import com.github.jjobes.slidedatetimepicker.SlideDateTimeListener;
import com.github.jjobes.slidedatetimepicker.SlideDateTimePicker;


public class AlertDateTimePickerParentActivity extends FragmentActivity{


    private static final String TAG = AlertDateTimePickerParentActivity.class.getSimpleName();
    private SimpleDateFormat mFormatter = new SimpleDateFormat("MMMM dd yyyy hh:mm aa");
    private Button mButtonSetStartDate;



    @Override
    protected void onCreate( Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.alerdtparentactivitylayout);
        this.setFinishOnTouchOutside(false); //stops this activity being destroyed if user clicks outside the activity window

        mButtonSetStartDate = (Button) findViewById(R.id.mButtonSetStartDate);

        mButtonSetStartDate.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v)
            {
                new SlideDateTimePicker.Builder(getSupportFragmentManager())
                        .setListener(listener)
                        .setInitialDate(new Date())
                        //.setMinDate(minDate)
                        //.setMaxDate(maxDate)
                        //.setIs24HourTime(true)
                        //.setTheme(SlideDateTimePicker.HOLO_DARK)
                        //.setIndicatorColor(Color.parseColor("#990000"))
                        .build()
                        .show();
            }
        });


    }//end of onCreate



    private SlideDateTimeListener listener = new SlideDateTimeListener() {

        @Override
        public void onDateTimeSet(Date date)
        {
            Toast.makeText(AlertDateTimePickerParentActivity.this,
                    mFormatter.format(date), Toast.LENGTH_SHORT).show();
        }

        // Optional cancel listener
        @Override
        public void onDateTimeCancel()
        {
            Toast.makeText(AlertDateTimePickerParentActivity.this,
                    "Canceled", Toast.LENGTH_SHORT).show();
        }
    };


}//end of class

例外:

 Process: com.carefreegroup.rr3.carefreeoncall, PID: 22908
java.lang.IllegalStateException: Fragment DateFragment{427539b8 #0 id=0x7f0b0259 android:switcher:2131427929:0} declared target fragment SlideDateTimeDialogFragment{4273f670 #0 tagSlideDateTimeDialogFragment} that does not belong to this FragmentManager!
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1266)
    at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1574)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1641)
    at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:794)
    at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415)
    at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200)
    at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2153)
    at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2034)
    at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:651)
    at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)
    at android.support.v4.view.ViewPager.populate(ViewPager.java:1239)
    at android.support.v4.view.ViewPager.populate(ViewPager.java:1087)
    at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1613)
    at com.github.jjobes.slidedatetimepicker.CustomViewPager.onMeasure(CustomViewPager.java:70)
    at android.view.View.measure(View.java:17275)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5352)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
    at android.view.View.measure(View.java:17275)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5352)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at android.view.View.measure(View.java:17275)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5352)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at android.view.View.measure(View.java:17275)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5352)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2541)
    at android.view.View.measure(View.java:17275)
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2208)
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1325)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1547)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1226)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6362)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:803)
    at android.view.Choreographer.doCallbacks(Choreographer.java:603)
    at android.view.Choreographer.doFrame(Choreographer.java:573)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:789)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:157)
    at android.app.ActivityThread.main(ActivityThread.java:5350)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
    at dalvik.system.NativeStart.main(Native Method)

我试过在网上寻找答案,有些人指出问题是正在显示的片段(DateTime选择器),不属于封闭FragmentActivity的片段管理器.我不确定这究竟是什么意思.

有没有人有任何想法在这里可能是错的?

我是在搭载Android 4.4.2的三星Galaxy平板电脑SM-T520上运行的

.
表现:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xxx.rr3.carefreeoncall"
    android:versionCode="44"
    android:versionName="2.3.2" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="22" />

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.GET_TASKS" /> 
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  

    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:xlargeScreens="true" />

    <application
        android:name=".RROnCallApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/CustomActionBarTheme">


    <activity 
      android:name="com.carefreegroup.rr3.carefreeoncall.OnCallMenuActivity"
            android:label="@string/app_name"
            android:screenOrientation="landscape">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


        <activity
            android:name=".OnCallListAndDetailsActivity"
            android:screenOrientation="landscape" />

        <activity
            android:name=".DisplayCarerDetailsfragmentActivity"
            android:screenOrientation="portrait" />

        <activity
            android:name=".PurposeOfCallActivity"
            android:screenOrientation="portrait" />

        <activity
            android:name=".UpdateCallActivity"
            android:screenOrientation="landscape" />

        <activity
            android:name=".UpdateCallDateTimeAndCarerActivity"
            android:screenOrientation="landscape" />

        <activity
            android:name=".UpdateCallDateTimeActivity"
            android:screenOrientation="portrait" />

        <activity
            android:name=".UpdateCallNewCarerListActivity"
            android:screenOrientation="portrait" />


        <activity
            android:name=".DisplayCarerInfofragmentActivity"
            android:screenOrientation="portrait" />

        <activity
            android:name=".MenuActivity"
            android:screenOrientation="landscape" />

        <activity
            android:name=".MenuActivity2"
            android:screenOrientation="landscape" />

        <activity
            android:name=".client.DisplayClientDetailsfragmentActivity"
            android:screenOrientation="portrait" />

        <activity
            android:name=".client.DisplayClientInfofragmentActivity"
            android:screenOrientation="portrait" />

        <activity
            android:name=".client.ClientListDetailsPurposeActivity"
            android:screenOrientation="landscape" />


        <activity
            android:name=".CarerAwayActivity"
            android:screenOrientation="landscape" />

        <activity
            android:name=".DisplayCarerAwayDateTimeFragmentActivity"
            android:screenOrientation="portrait" />

        <activity
            android:name=".DisplayAwayReasonActivity"
            android:screenOrientation="portrait" />

        <activity
            android:name=".client.DisplayClientAwayDateTimeFragmentActivity"
            android:screenOrientation="portrait" />

        <activity
            android:name=".client.DisplayClientAwayReasonActivity"
            android:screenOrientation="portrait" />

        <activity
            android:name=".client.ClientAwayActivity"
            android:screenOrientation="landscape" />

         <activity
            android:name=".client.UpdateCallDateTimeAndClientActivity"
            android:screenOrientation="landscape" />

        <activity
            android:name=".client.UpdateCallDateTimeClientActivity"
            android:screenOrientation="portrait" />

        <activity
            android:name=".client.UpdateCallNewCarerListActivityClient"
            android:screenOrientation="portrait" />

        <activity
            android:name=".client.PurposeOfCallActivityClient"
            android:screenOrientation="portrait" />

        <activity
            android:name=".CarerSendLogActivity"
            android:screenOrientation="landscape" />

        <activity
            android:name=".CarerViewLogActivity"
            android:screenOrientation="landscape" />



        <activity
            android:name=".client.ClientSendLogActivity"
            android:screenOrientation="landscape" />

        <activity
            android:name=".CancelCallActivity"
            android:screenOrientation="landscape" />


        <activity
            android:name=".CancelCallActivityPhone"
            android:screenOrientation="portrait" />

        <activity
            android:name=".client.CancelCallActivityClient"
            android:screenOrientation="landscape" />

        <activity
            android:name=".client.CancelCallActivityPhoneClient"
            android:screenOrientation="portrait" />

        <activity
            android:name=".ShowUnallocatedCallsActivity"
            android:screenOrientation="landscape" />

        <activity
            android:name=".PurposeOfCallActivityUnalloc"
            android:screenOrientation="portrait" />

        <activity
            android:name=".ShowUnallocatedCallsActivityPhone"
            android:screenOrientation="portrait" />


        <activity
            android:name=".ShowMissedCallsActivity"
            android:screenOrientation="landscape" />

        <activity
            android:name=".ShowMissedCallsActivityPhone"
            android:screenOrientation="portrait" />


        <activity
            android:name=".PurposeOfCallActivityMissed"
            android:screenOrientation="portrait" />


        <activity
            android:name=".ShowAlertsActivity"
            android:screenOrientation="landscape"
            android:launchMode="singleInstance" />

        <activity
            android:name=".AlertDetailsActivityPhone"
            android:screenOrientation="portrait" />



        <activity
            android:name=".GetRotaDetails2"
            android:screenOrientation="landscape" />

        <activity
            android:name=".GetRotaDetailsForPhone"
            android:screenOrientation="portrait" />




        <service android:name=".GetCarerService"></service>
        <service android:name=".GetCarersIntentService"></service>
        <service android:name=".client.GetClientsIntentService"></service>
        <service android:name=".SendcarerMessageIntentService"></service>
        <service android:name=".SendcarerMessageSMSIntentService"></service>
        <service android:name=".ShowAlertsIntentService"></service>

        <receiver
            android:name="AlarmReceiver" >
        </receiver>

        <activity
            android:name=".TreeViewListDemo"
            android:screenOrientation="landscape" />





        <activity
            android:name=".ExpList"
            android:screenOrientation="landscape" />

        <activity
            android:name=".RunsDetailsPurposeActivity"
            android:screenOrientation="landscape" />

        <activity
            android:name=".DisplayRunDetailsfragmentActivity"
            android:screenOrientation="portrait" />

         <activity
            android:name=".RunPurposeOfCallActivity"
            android:screenOrientation="portrait" />

        <activity
            android:name=".CarerAwayListFragmentActivityPhone"
            android:screenOrientation="portrait" />

        <activity
            android:name=".CarerAwayDateUpdateActivityPhone"
            android:screenOrientation="portrait" />

        <activity
            android:name=".CarerAwayReasonActivityPhone"
            android:screenOrientation="portrait" />

        <activity
            android:name=".CarerAwayReasonUpdateActivityPhone"
            android:screenOrientation="portrait" />



        <activity
            android:name=".client.ClientAwayListFragmentActivityPhone"
            android:screenOrientation="portrait" />

        <activity
            android:name=".client.ClientAwayReasonActivityPhone"
            android:screenOrientation="portrait" />

        <activity
            android:name=".client.ClientAwayDateUpdateActivityPhone"
            android:screenOrientation="portrait" />

        <activity
            android:name=".client.AddCallActivity"
             />

        <activity
            android:name=".client.AddCallDateTimeActivityPhone"
            android:screenOrientation="portrait" />

        <activity
            android:name=".client.AddCallContractsActivityPhone"
            android:screenOrientation="portrait" />

        <activity
            android:name=".client.AddCallRunsActivityPhone"
            android:screenOrientation="portrait" />

        <activity
            android:name=".client.AddCallCarerActivityPhone"
            android:screenOrientation="portrait" />

        <activity
            android:name=".CarerViewLogActivityPhone"
            android:screenOrientation="portrait" />

        <activity
            android:name=".CarerViewLogsListFragmentActivityPhone"
            android:screenOrientation="portrait" />

        <activity
            android:name=".ShowInboxSentboxActivity"
            android:screenOrientation="landscape" />

         <activity
            android:name=".InboxFragmentActivityPhone"
            android:screenOrientation="portrait" />


         <activity
            android:name=".HelpActivity"
            android:screenOrientation="landscape" />

         <activity
            android:name=".UpdateMultiCallWithRunAndCarerActivity"
            android:screenOrientation="landscape" />


         <activity
            android:name=".UpdateMultiCallWithRunActivityPhone"
            android:screenOrientation="portrait" />

         <activity
            android:name=".UpdateMultiCallWithCarerActivityPhone"
            android:screenOrientation="portrait" />

         <activity
            android:name=".UpdateSingleCallWithRunActivityPhone"
            android:screenOrientation="portrait" />

        <service android:name=".MailService"></service>

        <activity
            android:name=".SendGroupMessageActivity"
            android:screenOrientation="landscape" />

        <service android:name=".SendCarerGroupMessageService"></service>

        <activity
            android:name=".AlertDateTimePickerParentActivity"
            android:screenOrientation="landscape"
            android:excludeFromRecents="true"/>


    </application>

</manifest>

解决方法:

确保您只使用一种类型的FragmentManager
来自android.app.fragment的getFragmentManager()或来自android.support.v4.fragment的getSupportFragmentManager().
我也遇到了这个错误,&原因是这个.我从支持库扩展了两个,但不知何故,我从app库启动了一个,&从支持中呼唤其他人.试试看

上一篇:javascript – jQuery Datepicker在下个月点击后打开两次(使用2个Datepickers)


下一篇:electron中使用bootstrap,jquery及日期控件库报错