,如果你的佈局不含量按鈕的ID(你的情況btnOK
),Eclipse將拋出NullPointerException異常 - 它不能在佈局中的內容找到它。 所以當你設置你的佈局(或菜單)時,它必須包含id btnOK。覈實!
把你的按鈕初始化後setContentView(R.layout.your_about_layout_name);
把所有的代碼
Button btnOK;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about);
btnOK = (Button)findViewById(R.id.btnOK);
btnok.setOnClickListener(OKListener);
}
更新: 看invertigo的答案: 是錯誤的改變佈局當你點擊按鈕。 你要做這樣說:
CalculatorActivity
public class CalculatorActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calculator_black);
// initialization of your views stays here
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.calculator_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.your_id_to_go_in_about_activity:
Intent intent = new Intent(CalculatorActivity.this, AboutActivity.class);
// put some extras if you need to send information from this page to the
// AboutActivity page with this code: intent.putExtra();
startActivity(intent); // with this code you go to AboutActivity
return true;
case R.id.theme:
// Do Something with the theme
return true;
default:
return super.onOptionsItemSelected(item);
}
}
現在,您OKButton初始化的地方是在新的班級,讓我們把它叫做 AboutActivity 在這裏,你可以把我的較早的代碼:
public class AboutActivity extends Activity{
Button btnOK;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about);
btnOK = (Button)findViewById(R.id.btnOK);
btnok.setOnClickListener(OKListener);
}
// and the listener for your OK button have to look like this:
OnClickListener OKListener = new OnClickListener() {
@Override
public void onClick(View v) {
// Do something here if you need
finish(); // with finish() you are returning to the previous page
// which is CalculatorActivity
}
};
}
您從不同的視圖層次初始化按鈕?您可以將當前視圖層次結構的'findViewById'設置爲活動。 – Raghunandan