2017-04-10 57 views
1

我在xml中製作了一個不可見的按鈕,當我的EditText中的某個字符串值被創建時,我想讓按鈕再次可見。當使用if語句滿足值時,我使用TextWatcher檢查。但是,當顯示按鈕的代碼被執行時,應用程序崩潰,說textwatcher停止工作。我對android開發很陌生,所以可能是我搞砸了。如何讓我的按鈕變得可見與TextChanger?

這裏是我的代碼:

public class MainActivity extends AppCompatActivity 
{ 
    private EditText UserInput; 
    private Button button; 

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

     Button button = (Button)findViewById(R.id.button); 
     UserInput = (EditText) findViewById(R.id.UserInput); 
     UserInput.addTextChangedListener(watch); 
    } 

    TextWatcher watch = new TextWatcher() 
    { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

      if(s.toString().equals("teststring")){ 
       //program crashes when it reaches this part 
       button.setVisibility(View.VISIBLE); 
      } 
      else 
      { 

      } 
     } 
     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    };  
} 
+0

發佈您的logcat – Moulesh

回答

0

改變這一行

Button button = (Button)findViewById(R.id.button); 

button = (Button)findViewById(R.id.button); 

這樣的類成員按鈕得到初始化

1

您已經定義了Button全球變量這裏:

private Button button; 

但是當你定義內onCreate方法的觀點,你定義一個本地變量Button並創建實例,在這裏:

Button button = (Button)findViewById(R.id.button); 

後來,當你調用setVisibilityButton,您在Global變量上調用此方法時未實例化。 爲了解決s刊簡單的改變你的onCreate方法是這樣的:

button = (Button)findViewById(R.id.button); 

所以全球變量實例化。

相關問題