レイアウトにボタンの 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 の回答を見てください: ボタンをクリックしたときにレイアウトを変更するのは間違っています。このようにする必要があります:
電卓アクティビティ
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
}
};
}