8

'da kullanılan bir parçacığa boş bir kurucu eklemem gerekir. Google oyunlarına benzer bir düzen hazırlıyorum. Parça gerektiren bir ViewPager kullanıyorum. Biraz kafam karışıyor çünkü bazı siteler bir parçanın boş bir kurucu gerektirdiğini söylüyor, ancak developer.android.com'daki örnek bir kurucu içermiyor. Orada kod sadece şu şekildedir:Android: ViewPager

public static class DemoObjectFragment extends Fragment { 
    public static final String ARG_OBJECT = "object"; 

    @Override 
    public View onCreateView(LayoutInflater inflater, 
      ViewGroup container, Bundle savedInstanceState) { 
     // The last two arguments ensure LayoutParams are inflated 
     // properly. 
     View rootView = inflater.inflate(
       R.layout.fragment_collection_object, container, false); 
     Bundle args = getArguments(); 
     ((TextView) rootView.findViewById(android.R.id.text1)).setText(
       Integer.toString(args.getInt(ARG_OBJECT))); 
     return rootView; 
    } 
} 

Bu yüzden bir parçasındaki bir kurucu eklemesi gerekmektedir ya da sadece yapıcı dışarı bırakabilir mi?

cevap

10

Java derleyici, varsayılan olarak, bir yapıcı özelliği olmayan herhangi bir sınıfa, (soruda başvuruda bulunduğunuz "boş yapıcı" olan) bir varsayılan no-args yapıcısını ekler.

aşağıdaki boş sınıfı: Açıkça no-args eklemek için gerekli olan

public class A { 

    public A() { 
    } 

} 

:

public class A { 
} 

boş gövdeli no-args yapıcısı ile şu sınıfa eşdeğerdir kurucu sadece bir veya daha fazla argümanla başka bir kurucu içerdiğinde, çünkü bu durumda derleyici sizin için eklemez.

+0

Tamam, boş bir kurucu eklediğimde farketmez mi? – Xander

+0

Boş bir gövdeye sahip bir hata oluşturucu oluşturucu eklemezseniz, herhangi bir değişiklik yapmayacaktır. –

+0

Ve "sadece bir veya daha fazla argümanı olan başka bir kurucu eklerken" ile ne kastediyorsunuz? Bu sadece parça sınıfının kurucuları için mi, yoksa aynı zamanda parça içindeki bir ASyncTask yapıcısı için mi? – Xander

1

Herhangi bir kurucu eklemezseniz, bir yapıcı çağırma, süper kurucuya (boş bir kurucu oluşturma ile aynı) başvurur. Fakat başka bir kurucu (Fragments ile istenmediyse, onCreate'da yapmak istediğiniz her şeyi yaparsanız, parçanız her zaman onunla örneklenmeyecektir, bazen sistem parçayı başlatacaktır ve boş kurucu çağrılacaktır) sizden daha fazla Ayrıca boş bir tane sağlamanız gerekir.

+1

Parçalar için boş yapıcının yanında kurucular kullanmamalısınız. Bunun yerine örnekleme desenini kullanın. – Warpzit

+1

… Bir Bundle'a serileştirmek ve serileştirmek için daha fazla bilgi işlem gücü gerektiren karmaşık bir nesneyi geçmek istemiyorsanız… –

İlgili konular