2017-10-18 95 views
0

我嘗試了兩種不同的方式在按鈕水龍頭上執行某些代碼,其中一種可以正常工作,另一種則會使用Android 4.1的手機崩潰應用程序。應用程序在按鈕水龍頭上崩潰

如果我添加onCreate方法內的點擊偵聽器然後它的工作,但如果我用不同的方法做,然後應用程序崩潰(我沒有添加方法名稱的onClick事件的按鈕)。

作品

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

    final Button button = (Button) findViewById(R.id.button1); 
    if (button != null) { 
     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar); 
       if (progressBar != null) { 
        progressBar.setVisibility(View.VISIBLE); 
       } 
      } 
     }); 
    } 
} 

崩潰按鈕自來水應用:

protected void playOnClick (View v) { 
     Button button = (Button) v; 
     if (button != null) { 
      ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar); 
      if (progressBar != null) { 
       progressBar.setVisibility(View.VISIBLE); 
      } 
     } 
    } 

任何想法,爲什麼?今天開始學習Android開發。

編輯

從保護公衆固定的碰撞改變方法playOnClick。

回答

0

更改方法playOnClick從保護到公共修復崩潰。

public void playOnClick (View v) { 
    Button button = (Button) v; 
    if (button != null) { 
     ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar); 
     if (progressBar != null) { 
      progressBar.setVisibility(View.VISIBLE); 
     } 
    } 
} 
0

考慮到你的按鈕和進度存在於你的「activity_main」佈局,綁定在你的onCreate(享有安全的方式)應該是這樣的:

使用時
private Button button; 
private ProgressBar progressBar; 

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

    button = (Button) findViewById(R.id.button1); 
    progressBar = (ProgressBar) findViewById(R.id.progressBar); 

    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      progressBar.setVisibility(View.VISIBLE); 
     } 
    }); 
} 

應用程序不會崩潰的方法:

protected void playOnClick (View v) { 
    progressBar.setVisibility(View.VISIBLE); 
} 
相關問題