انجمن سایت کلیدستان



مشکل استفاده از ViewPager در NestedFragmentزمان کنونی: ۱۳۹۵/۰۹/۱۷، ۰۱:۰۸ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: mahdi10539
آخرین ارسال: mahdi10539
پاسخ 3
بازدید 241

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل استفاده از ViewPager در NestedFragment

مشکل استفاده از ViewPager در NestedFragment

#1
سلام


دوستان کسی تا حالا با ViewPager بدون TabHost در Nested Fragment  کار کرده 

کد پی‌اچ‌پی:
Logcat 

03-03 05:17:37.300 1415-1415/com.olomrayan.obituary D/AndroidRuntimeShutting down VM
03
-03 05:17:37.305 1415-1415/com.olomrayan.obituary E/AndroidRuntimeFATAL EXCEPTIONmain
                                                                      Process
com.olomrayan.obituaryPID1415
                                                                      java
.lang.NullPointerExceptionAttempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
                                                                          at android
.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:667)
 
                                                                         at android.support.v4.app.FragmentStatePagerAdapter.restoreState(FragmentStatePagerAdapter.java:211)
 
                                                                         at android.support.v4.view.ViewPager.onRestoreInstanceState(ViewPager.java:1319)
 
                                                                         at android.view.View.dispatchRestoreInstanceState(View.java:14746)
 
                                                                         at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3121)
 
                                                                         at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3127)
 
                                                                         at android.view.View.restoreHierarchyState(View.java:14724)
 
                                                                         at android.support.v4.app.Fragment.restoreViewState(Fragment.java:468)
 
                                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1094)
 
                                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)
 
                                                                         at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
 
                                                                         at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613)
 
                                                                         at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517)
 
                                                                         at android.os.Handler.handleCallback(Handler.java:739)
 
                                                                         at android.os.Handler.dispatchMessage(Handler.java:95)
 
                                                                         at android.os.Looper.loop(Looper.java:148)
 
                                                                         at android.app.ActivityThread.main(ActivityThread.java:5417)
 
                                                                         at java.lang.reflect.Method.invoke(Native Method)
 
                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
 
                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616

MainActivity:
کد پی‌اچ‌پی:
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Toast;

import java.io.IOException;
import java.io.InputStream;

public class 
MainActivity extends AppCompatActivity implements OnFragmentInteractionListener {

 
   NewFragment newFragment null;
 
   MainFragment mainFragment null;
 
   String CurrentFragment "MainActivity";

 
   @Override
    protected void onCreate
(Bundle savedInstanceState) {
 
       super.onCreate(savedInstanceState);
 
       setContentView(R.layout.activity_main);
 
       final Toolbar toolbar = (ToolbarfindViewById(R.id.toolbar);
 
       setSupportActionBar(toolbar);

 
       initFirstLoad();

 
       Bitmap bitmap null;
 
       FloatingActionButton fab = (FloatingActionButtonfindViewById(R.id.fab);
 
       try {
 
           InputStream is getAssets().open("images/new.png");
 
           bitmap BitmapFactory.decodeStream(is);
 
       } catch (IOException e) {
 
           e.printStackTrace();
 
       }

 
       fab.setImageBitmap(bitmap);
 
       fab.setOnClickListener(new View.OnClickListener() {
 
           @Override
            public void onClick
(View view) {

 
               if (newFragment == null) {
 
                   newFragment NewFragment.newInstance();
 
               }

 
               if (newFragment.isVisible()) {
 
                   return;
 
               }

 
               CurrentFragment "NewFragment";
 
               FragmentManager fragmentManager getSupportFragmentManager();
 
               FragmentTransaction fragmentTransaction fragmentManager.beginTransaction();
 
               fragmentTransaction.add(R.id.mainfragmentnewFragment"NewFragment").addToBackStack("NewFragment");
 
               fragmentTransaction.commit();
 
           }
 
       });
 
   }

 
   @Override
    public void onBackPressed
() {

 
           if (CurrentFragment.equals("NewFragment") && newFragment.isVisible()) {
 
               getSupportFragmentManager().popBackStack();
 
               CurrentFragment getSupportFragmentManager().getFragments().get(0).getTag();
 
               if (CurrentFragment == null)
 
                   CurrentFragment "MainActivity";

 
               //noinspection ConstantConditions
 
               getSupportActionBar().setTitle(R.string.app_name);
 
           }
 
       //super.onBackPressed();
 
   }

//    @Override
//    public void onBackPressed() {
//        Log.d("MYLOG",String.valueOf(getFragmentManager().getBackStackEntryCount()));
//        if (getFragmentManager().getBackStackEntryCount() > 0) {
//            getFragmentManager().popBackStack();
//        } else {
//            super.onBackPressed();
//        }
//    }

 
   private void initFirstLoad() {
 
       if (mainFragment == null) {
 
           mainFragment MainFragment.newInstance();
 
       }
 
       FragmentManager fragmentManager getSupportFragmentManager();
 
       FragmentTransaction fragmentTransaction fragmentManager.beginTransaction();
 
       fragmentTransaction.add(R.id.mainfragmentmainFragment"MainFragment").addToBackStack("MainFragment");
 
       fragmentTransaction.commit();

 
   }


 
   @Override
    public void onFragmentInteraction
(String fragmentNameString[] Values) {

 
       switch (fragmentName) {
 
           case "AboutFragment":
 
               Toast.makeText(MainActivity.this"MainActivity onFragmentInteraction From About Fragment : Uri " Values[0], Toast.LENGTH_SHORT).show();
 
               break;
 
       }
 
   }

MainFragment:
کد پی‌اچ‌پی:
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Toast;

import com.olomrayan.obituary.Adapters.CustomAdapterRecyclerView;
import com.olomrayan.obituary.Database.DBAccess;
import com.olomrayan.obituary.Database.DBHelper;
import com.olomrayan.obituary.Models.ObituaryItem;

import java.util.ArrayList;
import java.util.List;

import jp.wasabeef.recyclerview.adapters.AlphaInAnimationAdapter;
import jp.wasabeef.recyclerview.adapters.ScaleInAnimationAdapter;
import jp.wasabeef.recyclerview.animators.SlideInLeftAnimator;


public class 
MainFragment extends Fragment implements OnFragmentInteractionListener {

 
   private OnFragmentInteractionListener mListener;
 
   ProgressDialog mProgressDialog;
 
   View mRootView;
 
   List<ObituaryItemmObituaryItemList;
 
   DBAccess mDBAccess;

 
   public MainFragment() {

 
   }


 
   public static MainFragment newInstance() {

 
       return new MainFragment();
 
   }

 
   @Override
    public void onCreate
(Bundle savedInstanceState) {

 
       super.onCreate(savedInstanceState);
 
   }

 
   @Override
    public View onCreateView
(LayoutInflater inflaterViewGroup container,
 
                            Bundle savedInstanceState) {
 
       mRootView inflater.inflate(R.layout.fragment_maincontainerfalse);
 
       return mRootView;
 
   }

 
   @Override
    public void onActivityCreated
(@Nullable Bundle savedInstanceState) {
 
       super.onActivityCreated(savedInstanceState);



 
       mObituaryItemList = new ArrayList<>();

 
       LoadingData loadingData = new LoadingData();
 
       loadingData.execute();

 
       RecyclerView recyclerView = (RecyclerViewmRootView.findViewById(R.id.recyclerview);
 
       recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
 
       CustomAdapterRecyclerView customAdapterRecyclerView = new CustomAdapterRecyclerView(mObituaryItemList);

 
       AlphaInAnimationAdapter alphaInAnimationAdapter = new AlphaInAnimationAdapter(customAdapterRecyclerView);
 
       recyclerView.setItemAnimator(new SlideInLeftAnimator());
 
       recyclerView.getItemAnimator().setChangeDuration(1000);
 
       alphaInAnimationAdapter.setDuration(1000);
 
       alphaInAnimationAdapter.setFirstOnly(false);
 
       alphaInAnimationAdapter.setHasStableIds(true);
 
       recyclerView.setAdapter(new ScaleInAnimationAdapter(alphaInAnimationAdapter));
 
   }

 
   public void onButtonPressed(String fragmentNameString[] Values ) {
 
       if (mListener != null) {
 
           mListener.onFragmentInteraction(fragmentNameValues);
 
       }
 
   }


 
   @Override
    public void onAttach
(Context context) {
 
       super.onAttach(context);
 
       if (context instanceof OnFragmentInteractionListener) {
 
           mListener = (OnFragmentInteractionListenercontext;
 
       } else {
 
           throw new RuntimeException(context.toString()
 
                   " must implement OnFragmentInteractionListener");
 
       }
 
   }

 
   @Override
    public void onDetach
() {
 
       super.onDetach();
 
       mListener null;
 
   }

 
   @Override
    public void onFragmentInteraction
(String fragmentNameString[] Values) {
 
       switch (fragmentName) {
 
           case "AboutFragment":
 
               Toast.makeText(getActivity(), "MainFragment onFragmentInteraction From About Fragment : Uri " Values[0], Toast.LENGTH_SHORT).show();
 
               break;
 
           default:
 
       }
 
   }

 
   class LoadingData extends AsyncTask<String,String,List<ObituaryItem>> {


 
       @Override
        protected void onPreExecute
() {
 
           super.onPreExecute();
 
           mDBAccess DBAccess.getInstance(getActivity());

 
           mProgressDialog = new ProgressDialog(getActivity());
 
           mProgressDialog.setIndeterminate(true);
 
           mProgressDialog.setCancelable(false);
 
           mProgressDialog.setProgressStyle(android.R.attr.progressBarStyleSmall);
 
           mProgressDialog.show();
 
           WindowManager.LayoutParams params mProgressDialog.getWindow().getAttributes();
 
           params.= -20;
 
           params.height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP150fgetResources().getDisplayMetrics());
 
           params.width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP180fgetResources().getDisplayMetrics());
 
           params.= -10;
 
           mProgressDialog.getWindow().setAttributes(params);
 
           mProgressDialog.setContentView(R.layout.loadgin_data_progressbar);
 
       }
 
       @Override
        protected 
List<ObituaryItemdoInBackground(String... params) {

 
           return mDBAccess.getSelectData(DBHelper.DB_TABLE_NAMEDBHelper.TABLE_COLUMNS_NAMES,null,null,null,null,DBHelper.TABLE_COLUMNS_CREATEDATE " DESC");
 
       };



 
       @Override
        protected void onProgressUpdate
(String... values) {
 
           super.onProgressUpdate(values);
 
       }

 
       @Override
        protected void onPostExecute
(List<ObituaryItemobituaryItemList) {

 
           mProgressDialog.dismiss();
 
       }
 
   }


NewFragment:
کد پی‌اچ‌پی:
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;

import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.olomrayan.obituary.Adapters.CustomPagerAdapter;


public class 
NewFragment extends Fragment implements View.OnKeyListener {


 
   int CurrnetPagerItem 1;

 
   private OnFragmentInteractionListener mListener;

 
   public NewFragment() {
 
       // Required empty public constructor
 
   }


 
   public static NewFragment newInstance() {
 
       new NewFragment();

 
       return new NewFragment();
 
   }

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

 
   }


 
   @Override
    public View onCreateView
(LayoutInflater inflaterViewGroup container,
 
                            Bundle savedInstanceState) {

 
       View rootView inflater.inflate(R.layout.fragment_newcontainerfalse);

 
       //noinspection ConstantConditions
 
       final ViewPager viewPager = (ViewPagerrootView.findViewById(R.id.viewPager);

 
       FragmentManager fragmentManager getChildFragmentManager();
 
       CustomPagerAdapter customPagerAdapter = new CustomPagerAdapter(fragmentManager);
 
       //customPagerAdapter.setPrimaryItem(viewPager,0,StepOneFragment.newInstance());
 
       Log.d("MYLOG"String.valueOf(customPagerAdapter.getCount()));
 
       viewPager.setAdapter(customPagerAdapter);

 
       viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
 
           @Override
            public void onPageScrolled
(int positionfloat positionOffsetint positionOffsetPixels) {

 
           }

 
           @Override
            public void onPageSelected
(int position) {
 
               Log.d("MYLOG"String.valueOf(position));
 
               CurrnetPagerItem position;
 
           }

 
           @Override
            public void onPageScrollStateChanged
(int state) {

 
           }
 
       });


 
       Button btnNext = (ButtonrootView.findViewById(R.id.btnNext);

 
       btnNext.setOnClickListener(new View.OnClickListener() {
 
           @Override
            public void onClick
(View v) {


 
               if (CurrnetPagerItem 1)
 
                   CurrnetPagerItem 0;

 
               viewPager.setCurrentItem(CurrnetPagerItem);

 
               CurrnetPagerItem++;

 
           }
 
       });

 
       ActionBar toolbar = ((AppCompatActivitygetActivity()).getSupportActionBar();

 
       if (toolbar != null) {
 
           toolbar.setHomeButtonEnabled(true);
 
           toolbar.setDisplayShowTitleEnabled(true);
 
           toolbar.setDisplayShowHomeEnabled(true);
 
           toolbar.setTitle("New Obituary");
 
       }

 
       return rootView;
 
   }

 
   @Override
    public void onViewCreated
(View view, @Nullable Bundle savedInstanceState) {
 
       super.onViewCreated(viewsavedInstanceState);


 
   }

 
   public void onButtonPressed(String[] Values) {
 
       if (mListener != null) {
 
           mListener.onFragmentInteraction("NewFragment"Values);
 
       }
 
   }


 
   @Override
    public void onAttach
(Context context) {
 
       super.onAttach(context);
 
       if (context instanceof OnFragmentInteractionListener) {
 
           mListener = (OnFragmentInteractionListenercontext;
 
       } else {
 
           throw new RuntimeException(context.toString()
 
                   " must implement OnFragmentInteractionListener");
 
       }
 
   }

 
   @Override
    public void onDetach
() {
 
       super.onDetach();
 
       mListener null;

 
   }


 
   @Override
    public boolean onKey
(View vint keyCodeKeyEvent event) {
//        if (event.getAction() == KeyEvent.ACTION_DOWN) {
//            if (keyCode == KeyEvent.KEYCODE_BACK) {
//                return true;
//            }
//        }
 
       return false;
 
   }


CustomPagerAdapter:
کد پی‌اچ‌پی:
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.util.Log;

import com.olomrayan.obituary.StepOneFragment;
import com.olomrayan.obituary.StepTwoFragment;

public class 
CustomPagerAdapter extends FragmentPagerAdapter {



 
   int count 2;
 
   public CustomPagerAdapter(FragmentManager fm) {
 
       super(fm);
 
       Log.d("MYLOG""Custom Created");

 
   }

 
   @Override
    public int getCount
() {
 
       return (count);
 
   }

 
   @Override
    public Fragment getItem
(int position) {
 
       Fragment fragment;
 
       Log.d("MYLOG"String.valueOf(position));

 
       switch (position) {

 
           case 0:
 
               fragment StepOneFragment.newInstance();
 
           break;
 
           case 1:
 
               fragment  StepTwoFragment.newInstance();
 
               break;

 
           default:
 
               fragment  null;
 
       }

 
       return fragment;
 
   }



OnFragmentInteraction Interface : 
کد پی‌اچ‌پی:
public interface OnFragmentInteractionListener {
 
   void onFragmentInteraction(String fragmentName,String[] Values);


mainavtivity.xml
کد پی‌اچ‌پی:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.olomrayan.obituary.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <fragment
        android:layout_marginTop="64dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/mainfragment"
        class ="com.olomrayan.obituary.MainFragment"
        tools:layout="@layout/fragment_main" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        app:rippleColor="@color/colorAccent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        app:backgroundTint="@color/textColorPrimary"
        android:scrollbars="vertical"
        android:layout_margin="@dimen/fab_margin"
        android:src="@drawable/newo"
        app:theme="@style/MyFloatingButton"/>
</android.support.design.widget.CoordinatorLayout> 
mainfragment.xml
کد پی‌اچ‌پی:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 
   xmlns:tools="http://schemas.android.com/tools"
 
   android:layout_width="match_parent"
 
   android:layout_height="match_parent"
 
   tools:context="com.olomrayan.obituary.MainFragment">

<
android.support.v7.widget.RecyclerView
    android
:layout_width="match_parent"
 
   android:fitsSystemWindows="true"
 
   android:layout_below="@android:id/empty"
 
   android:layout_alignWithParentIfMissing="true"
 
   android:layout_height="match_parent"
 
   android:id="@+id/recyclerview">

</
android.support.v7.widget.RecyclerView>

</
RelativeLayout
newfragment.xml
کد پی‌اچ‌پی:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 
   xmlns:app="http://schemas.android.com/apk/res-auto"
 
   xmlns:tools="http://schemas.android.com/tools"
 
   android:layout_width="match_parent"
 
   android:layout_height="match_parent"
 
   android:weightSum="100"
 
   android:background="@color/navigationBarColor"
 
   tools:context="com.olomrayan.obituary.NewFragment"
 
   android:orientation="vertical">


 
   <android.support.v4.view.ViewPager
        android
:id="@+id/viewPager"
 
       android:layout_width="match_parent"
 
       android:layout_height="0dp"
 
       android:layout_weight="100">
 
   </android.support.v4.view.ViewPager>

 
   <Button
        android
:layout_width="match_parent"
 
       android:layout_height="wrap_content"
 
       android:id="@+id/btnNext"
 
       android:text="Next Page" />

</
LinearLayout
پاسخ

مشکل استفاده از ViewPager در NestedFragment

#2
مشکل برطرف شد.

اشکال در مدیریت چرخه حیات NewFragment بود
بار اول که NewFragment ساخته میشه ViewPager میاد و customPagerAdapter رو راه اندازی میکنه.
CustomPagerAdapter هم میاد StepOneFragment و stepTwoFragment  رو راه اندازی میکنه
چون در پیاده سازی CustomPagerAdapter  از FragmentStatePagerAdapter استفاده شده قسمتی از Content و تعدا اونها در چرخه حیات ViewPager و NewFragment ذخیره میشه.

چون ما در طراحی انجام شده هنوز قسمت OnDetach مربوط به NewFragment  و بقیه Fragmentها رو پیاده سازی نکردیم برای هیمن از چرخه حیات خارج نمیشن و هنگامی که دوباره NewFragment راه اندازی میشه اطلاعات قبلی مربوط به NewFragment بازگردانی میشه ولی این بار چون هنوز StepOneFragment  و StepTwoFragment راه اندازی نشدن . ViewPager با اطلاعات غلط یا اشتباه پر میشه و هنوز فکر میکنه که دو Fragment گفته شده راه اندازی شدن . در حالی که راه اندازی نشدن و هیچ اطلاعاتی ازشون موجوذد نیست.
برای همین منظور پیغام خطای زیر رو میده
کد پی‌اچ‌پی:
NullPointerExceptionAttempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
                                                                          at android
.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:667)
 
                                                                         at android.support.v4.app.FragmentStatePagerAdapter.restoreState(FragmentStatePagerAdapter.java:211)
 
                                                                         at android.support.v4.view.ViewPager.onRestoreInstanceState(ViewPager.java:1319)
 
                                                                         at android.view.View.dispatchRestoreInstanceState(View.java:14746

نکته :  در استفاده از Fragment ها و NestedFragmentها همیشه با Onattach و OnDetach دقت کنید
پاسخ

مشکل استفاده از ViewPager در NestedFragment

#3
فراموش کردم بگم
این هم کد مربوط به برطرف کردن مشکل

در MainActivity در رویداد onclicklistener مربوط به floatingactionbutton  یا fab کد زیر رو جایگزین کنید


کد پی‌اچ‌پی:
کد قدیمی 

if (newFragment == null) {
 
                   newFragment NewFragment.newInstance();
 
               }

 
               if (newFragment.isVisible()) {
 
                   return;
 
               }

 
               CurrentFragment "NewFragment";
 
               FragmentManager fragmentManager getSupportFragmentManager();
 
               FragmentTransaction fragmentTransaction fragmentManager.beginTransaction();
 
               fragmentTransaction.add(R.id.mainfragmentnewFragment"NewFragment").addToBackStack("NewFragment");
 
               fragmentTransaction.commit();
 
           


کد پی‌اچ‌پی:
کد جدید

FragmentManager fragmentManager 
getSupportFragmentManager();
 
               FragmentTransaction fragmentTransaction fragmentManager.beginTransaction();
 
               newFragment = (NewFragmentfragmentManager.findFragmentByTag("NewFragment");

 
               if (newFragment == null) {
 
                   Log.d("MYLOG","NewFragment Is Nulled");
 
                   newFragment NewFragment.newInstance();
 
               }

 
               if (newFragment.isVisible()) {
 
                   return;
 
               }

 
               Log.d("MYLOG","CurrentFragment Is "+CurrentFragment);
 
               CurrentFragment "NewFragment";
 
               Log.d("MYLOG","CurrentFragment Is Changed To NewFragment");

 
               fragmentTransaction.add(R.id.mainfragmentnewFragment"NewFragment").addToBackStack("NewFragment");
 
               fragmentTransaction.commit(); 


نکته : بنا بر طراحی خاص برنامه . الگوی singleton بر روی کلاس NewFragment پیاده سازی ( شبیه سازی ) شده. هرچند Fragment ها به این خاطر طراحی شدن تا بشه از اونها چندین بار استفاده کرد.
پاسخ


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)