2016-04-03 14 views
1

Bir etkinlikte VISIBLE için bir RelativeLayout bloğu belirlemem gerekiyor. Ama şöyle bir değişkene RelativeLayout atamak gibi olamaz: android: XML'de tanımlanan kimliği kullanarak RelativeLayout nasıl başlatılır/şişirilir?

Relative Layout alarmSetBlock = (RelativeLayout) findViewById(R.id.sleep_text_block); 

alarmSetBlock

yerine null atanır.

Sanırım inflater.inflate gibi bir şey kullanmam gerekiyor ama parçaların dışında nasıl kullanılacağını bilmiyorum.

Lütfen bunu çözmenin en kolay/en iyi yolunu söyleyin.

düzen xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <RelativeLayout 
     android:layout_weight="1" 
     android:layout_width="match_parent" 
     android:layout_height="0dp"> 
     <Button 
      android:id="@+id/alarm_set_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:paddingLeft="20dp" 
      android:paddingRight="20dp" 
      android:paddingBottom="10dp" 
      android:paddingTop="10dp" 
      android:background="@color/mediumGray" 
      android:text="SET ALARM" 
      android:onClick="showTimePickerDialog"/> 
    </RelativeLayout> 


    <RelativeLayout 
     android:id="@+id/sleep_text_block" 
     android:layout_weight="1" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:visibility="gone"> 
     <TextView 
      android:id="@+id/sleep_text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="50dp" 
      android:layout_centerHorizontal="true" 
      android:textSize="20sp" 
      android:text="Alarm set to :"/> 

     <TextView 
      android:id="@+id/alarm_time" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="20dp" 
      android:layout_centerHorizontal="true" 
      android:layout_below="@id/sleep_text" 
      android:textColor="@color/colorAccent" 
      android:textSize="36sp" /> 
    </RelativeLayout> 

</LinearLayout> 

Ben başlatmak çalışıyorum RelativeLayout düzeninde ikinci bir tanesidir.

Yukarıdaki düzen için parça dosyası İşte. Bu parçayı tutan aktivite java dosyasının içinde RelativeLayout başlatmaya çalışıyorum.

public class SleepSetFragment extends Fragment { 

    public static SleepSetFragment newInstance() 
    { 
     SleepSetFragment fragment = new SleepSetFragment(); 
     return fragment; 
    } 

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

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) 
    { 
     return inflater.inflate(R.layout.fragment_sleep_set, container, false); 
    } 
} 
+0

gibi size Faaliyet XML ekleyebilir miyim: Burada

bir örnek? –

+0

Çalışması gereken, çok sayıda düzen klasörü kullanıyor musunuz? Ayrıca, kimliklerin her bir XML'de de ayarlandığından emin olun. –

+0

Tüm düzenlerim res/layout klasöründedir. Her XML’de kimlikleri nasıl belirlerim? Eğer 'android: id' kullanarak kimliği tanımlamak istediğinizi varsayalım. –

cevap

1

Sen onCreateView (XML düzeni şişirmek için unuttum) bu

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

      View view = inflater.inflate(R.layout.your_layout, container, false); 

      RelativeLayout alarmSetBlock = (RelativeLayout) view.findViewById(R.id.sleep_text_block); 
alarmSetBlock.setVisibility(Visibility.VISIBLE); 

      return view; 
     } 
+0

'RelativeLayout' sayfamın görünürlüğünü nerede ayarlayabilirim? 'OnCreateView()' yönteminin kendisinde, bağlı olduğu "SharedPreference" mantığı ile birlikte yapmalı mıyım? –

+0

RelativeLayout alarmSetBlock satırının hemen altında –

+0

Parça ve Etkinlik farklı yaşam döngüleri olduğundan, gözden geçirebilirsiniz. –

1

Etkinlikten bir parçanın içine bir görünüm elde etmeye çalışıyorsunuz. Bu gibi durumlarda findViewById() kullanamazsınız. Bunun yerine, belirli bir görünümü elde etmek için parçanızdan herkese açık bir yöntem göstermelisiniz. Ancak fragmanınızın şişirildiğinden ve aramadan önce etkinliğe eklendiğinden emin olun. https://stackoverflow.com/a/17023533/1395437

+0

'RelativeLayout', onCreateView() –

+0

olan bir parça dosyasındadır. Etkinliğin fragmandan veya görünümünden bir görünüm elde etmeye çalışıyor musunuz? faaliyetinizden mi? –

+0

Etkinlik içindeki bir parçanın görünümünü görmeye çalışıyor. –

İlgili konular