option menu를 공통(?)으로 사용을 하려고, 별도 클래스 파일을 생성했는데,
전역변수 호출하는데서 오류가 발생합니다.
다른 파일에서는 전역변수를 사용하고 있습니다.
----------- (s) manifest ------------
<activity android:name=".OptionMenu"
android:label="OptionMenu">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
----------- (e) manifest ------------
----------- (s) option menu ------------
public class OptionMenu extends Activity{
public static final int ID_GROUP_CHILD = 1;
public static final int ID_DIARYWRITE = Menu.FIRST + 1;
public static final int ID_CHILD_1 = Menu.FIRST + 2;
public static final int ID_CHILD_2 = Menu.FIRST + 3;
public boolean optionMenu(Menu menu) {
menu.add(Menu.NONE, ID_DIARYWRITE, 0, "쓰기");
SubMenu mChild = menu.addSubMenu("선택1");
mChild.add(ID_GROUP_CHILD, ID_CHILD_1, 0, "1번.");
mChild.add(ID_GROUP_CHILD, ID_CHILD_2, 0, "2번..");
return true;
}
public OptionMenu(Activity actTmp) {
act = actTmp;
}
public boolean initSelected(MenuItem item) {
switch (item.getItemId()) {
case ID_CHILD_1:
childChange("1");
return true;
case ID_CHILD_2:
childChange("2");
return true;
default:
return false;
}
}
private void childChange(String _child){
MemberInfo info = (MemberInfo)getApplicationContext(); <== 오류 : ERROR/AndroidRuntime(1514): java.lang.NullPointerException
info.setChild(_child);
}
}
----------- (e) option menu ------------
호출하는 페이지
----------- (s) 호출 페이지 ------------
@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean result = new OptionMenu(this).optionMenu(menu);
return result;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu){
boolean result = super.onPrepareOptionsMenu(menu);
return result;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
boolean tmp = new OptionMenu(this).initSelected(item);
if (tmp) return tmp;
else return super.onOptionsItemSelected(item);
}
----------- (e) 호출 페이지 ------------