2017-02-01 34 views
0
package com.example.eiraj.listviewseefrgmentsfiirst; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 

    TextView textView= (TextView) findViewById(R.id.textView); 

    public void show(View view){ 
     textView.setVisibility(View.VISIBLE); 
    } 

    public void hide(View view){ 
     textView.setVisibility(View.INVISIBLE); 
    } 

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

這裏兩個按鈕被用來顯示數據和隱藏數據,但每當我試圖運行模擬器顯示消息不幸uihide停止還我下載的APK運行它在我的手機,但同樣的信息在來到那裏機器人隱藏UI並顯示UI代碼不工作

+0

參見:http://stackoverflow.com/questions/36446114/why-android-app-crashes-for-initializing-variable-with-findviewbyidr-id –

回答

1

移動TextView textView= (TextView) findViewById(R.id.textView);onCreate 同時保持因爲onCreate執行之前外界onCreatetextView引用不存在的佈局連接到你的活動,因此這個問題

TextView textView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    textView= (TextView) findViewById(R.id.textView); 
} 

然後你MainActivity.java

public class MainActivity extends AppCompatActivity { 

    TextView textView; 

    public void show(View view){ 
     textView.setVisibility(View.VISIBLE); 
    } 

    public void hide(View view){ 
     textView.setVisibility(View.INVISIBLE); 
    } 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     textView= (TextView) findViewById(R.id.textView); 
    } 

} 

另外,您還可以使用textView.setVisibility(View.GONE);,如果你想徹底讓你的看法無形

0

附上您TextViewonCreate()

package com.example.eiraj.listviewseefrgmentsfiirst; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 
public TextView textView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    textView= (TextView) findViewById(R.id.textView);   
    }  

    public void show(View view){ 
     textView.setVisibility(View.VISIBLE); 
    } 

    public void hide(View view){ 
     textView.setVisibility(View.INVISIBLE); 
    }    
} 
0

我們不能在調用setContentView()之前初始化視圖,並且在onCreate()方法中強制呼叫setContentView()

這樣做:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    textView= (TextView) findViewById(R.id.textView); 
}