Nasıl bir program aracılığıyla oluşturulan içerik manzaralı bir Aktivite için bir Parça eklerim
Onun düzeni programlı olarak uygulayan bir Etkinlik için bir Parça eklemek istiyorum. Parça belgelerine baktım ama pek çok örnek istiyorum ne açıklayan yok. Burada yazmaya çalıştım kod türü:
public class DebugExampleTwo extends Activity {
private ExampleTwoFragment mFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout frame = new FrameLayout(this);
if (savedInstanceState == null) {
mFragment = new ExampleTwoFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(frame.getId(), mFragment).commit();
}
setContentView(frame);
}
}
...
public class ExampleTwoFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
Button button = new Button(getActivity());
button.setText("Hello There");
return button;
}
}
Bu kodu derler ama benim çünkü başlangıçta, FragmentTransaction.add()
muhtemelen çöker yanlıştır. Bunu yapmak için doğru yolu nedir?
CEVAP
Bu kod ile birden fazla sorun ortaya çıkıyor. Parçanın tamamı bu şekilde, aynı java içinde kamu iç bir sınıf aktivitesi olarak değil dosya bildirilmesi. Çerçeve parçanın yapıcı (herhangi bir parametre ile) halka açık ve görünür olmasını bekliyor. Bir iç sınıf olarak faaliyete parça hareket, ya da parça için yeni bir java dosyası oluşturma giderir.
İkinci sorunun bir parçası bu şekilde eklerken, parçanın içeren görüntülemek için bir referans geçmesi gereken, görünüm ve özel bir kimliği olmalıdır. Varsayılan kimlik kullanarak app kilitlenmesine. İşte güncelleştirilmiş kod:
public class DebugExampleTwo extends Activity {
private static final int CONTENT_VIEW_ID = 10101010;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout frame = new FrameLayout(this);
frame.setId(CONTENT_VIEW_ID);
setContentView(frame, new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
if (savedInstanceState == null) {
Fragment newFragment = new DebugExampleTwoFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(CONTENT_VIEW_ID, newFragment).commit();
}
}
public static class DebugExampleTwoFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
EditText v = new EditText(getActivity());
v.setText("Hello Fragment!");
return v;
}
}
}
Nasıl WPF uygulaması bir program aracı...
Nasıl bir ekran görüntüsü almak için p...
Nasıl Android program aracılığıyla bel...
Nasıl kimlik sütun değerleri değiştirm...
iPhone/iPad/): Nasıl benim IP adresi P...