2016-07-25 13 views
0

私はAndroidデベロッパーにとっては新しく、現在は表示の視認性を探っています。問題は、コンポーネントの表示を切り替えようとすると、Androidアプリがクラッシュすることです。下のコードスニペット。 RelativeLayout表示の切り替えが間違っている

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:text="@string/hello_world" /> 

<Button 
    android:id="@+id/button1" 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/textView1" 
    android:layout_centerHorizontal="true" 
    android:text="Button" 
    android:onClick="toggleVisibility" /> 

<Button 
    android:id="@+id/button2" 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView1" 
    android:layout_centerHorizontal="true" 
    android:text="Button" /> 
+0

あなた 'toggleVisibility()'メソッドは 'View'パラメータを必要とするを教えてください。 http://stackoverflow.com/questions/22927123/crossfading-2-views-using-a-button-in-android –

+0

Plzはクラッシュログを投稿します –

+0

@MikeM。残念ながら、ボタンをクリックするとまだクラッシュしています。 – iamLinker

答えて

0

を使用して

TextView txt; 
Button btn; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 

    txt = (TextView) findViewById(R.id.textView1); 
    txt.setVisibility(View.VISIBLE); 

} 
public void toggleVisibility(View view){ 
    RelativeLayout layout = new RelativeLayout(this); 
    String a = getString(txt.getVisibility()); 
    if(a.equals("GONE")){ 
     txt.setVisibility(View.VISIBLE); 
     layout.addView(txt); 
    } 
    else{ 
     txt.setVisibility(View.GONE); 
     layout.removeView(txt); 
    } 

    this.setContentView(layout); 
} 

XMLファイルには、私は手順を説明するのにインラインで答えを追加しました。それがあなたのニーズに合っているかどうかを見てください。

あなたが説明するために、何が必要な場合は、私が

TextView txt; 
    Button btn; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home); 

     // 1 - Here you associated the layout with your new textview. Means that you now hold a reference 
     // to your "txt" textview and that you have set it to be VISIBLE 
     txt = (TextView) findViewById(R.id.textView1); 
     txt.setVisibility(View.VISIBLE); 

    } 

    // 2 - you pass the argument view, but you dont really use it, so you can remove the paremeter 
    public void toggleVisibility(View view){ 

     // 3 - You dont need the new RelativeLayout. Since you already got the reference to the textview 
     // and since the TextView is already part of your layout, you can just call methods on it without having to remove and add it again 
     // RelativeLayout layout = new RelativeLayout(this); 

     // 4 - Dont get visibility from a String like you did 
     // String a = getString(txt.getVisibility()); 
     // So, instead of doing : 
     /* 
     if(a.equals("GONE")){ 
      txt.setVisibility(View.VISIBLE); 
      layout.addView(txt); 
     } 
     else{ 
      txt.setVisibility(View.GONE); 
      layout.removeView(txt); 
     } 
     */ 
     // You can just get the Visibility of a View using getVisibility() by doing the following : 

     if(txt.getVisiblity == View.VISIBLE) { 
      txt.setVisibility(View.GONE); 
     } else { 
      txt.setVisibility(View.VISIBLE); 
     } 

     // 5 - The setContentView method is generally meant to attach the Activity's view to the Activity, so you dont need/cant use it here 
     // this.setContentView(layout); 
    } 
関連する問題