私はAndroid開発に非常に慣れていません。
私のMainActivity.java
ファイルでは、ユーザーが現在のページと私が作成した別のページonOptionsItemSelected(MenuItem menu)
の間をジャンプできるようにするメソッドを宣言しました。MainActivity.java
Settings.java
ユーザーがSettings.java
ページに移動し、メニューからオプションをクリックしてHome
も、何も起こりません。これは、クラスではなくクラスでonOptionsItemSelected(MenuItem menu)
のみ定義されているためです。MainActivity.java
Settings.java
onOptionsItemSelected(MenuItem menu)
fromMainActivity.java
を にコピーすることで、今これを克服していSettings.java
ます。しかし、これは非常に冗長です。
異なるクラスで再利用できるメソッドはどこで宣言すればよいですか?
MainActivity.java
public class MainActivity extends Activity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
showMsg("Settings Clicked");
this.startActivity(new Intent(this, Settings.class));
return true;
case R.id.action_home:
showMsg("Home clicked");
this.startActivity(new Intent(this, MainActivity.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void showMsg(String msg) {
Toast toast = Toast.makeText(this.getBaseContext(), msg, Toast.LENGTH_LONG);
toast.show();
}
}
設定.java
public class Settings extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
this.startActivity(new Intent(this, Settings.class));
return true;
case R.id.action_home:
this.startActivity(new Intent(this, MainActivity.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}