Philip M.
- Forum-Beiträge: 90
01.09.2011, 21:43:09 via Website
01.09.2011 21:43:09 via Website
Guten Abend liebe Android Gemeinde,
da ich so zu sagen neu in der Android-Entwicklung bin, und nun mein erstes Projekt anliegt brauche ich das erstemal Hilfe. Ich hatte bisher das Buch "Einführung in die Android-Entwicklung" von Marko Gargenta durchgearbeitet, aber leider wurde dort mein Problem nicht mal im Ansatz angegangen.
Also, ich habe eine Activity (StartActivity) die beim Aufrufen der App gestartet wird, und eine weitere(MenuActivity), welche durch ein <include> in der XML Datei dieser Activity mit eingebettet ist. Soweit so gut.
Nun würde ich die MenuActivity gerne aus der StartActivity aufrufen bzw. deren Elemente(Buttons) abrufen, um auf diese OnClickListener zu setzen. Der Grund warum ich das so machen möchte ist, weil diese MenuActivity als Singleton bestehen soll. Heißt dieses Menü soll nur einmal existieren und ich kann es dann einfach auf die jeweils aufgerufene Activity setzen und die OnClickListener dort dynamisch setzen.
Meine Lösung sieht in etwa so aus (eben selbst zusammengeschrieben ohne IDE, da original Quellcode in der Firma liegt, Syntax Probleme sind im Original aber nicht vorhanden falls es hier der Fall sein sollte):
MainActivity
MenuActivityController
MenuActivity
MainActivity.xml
Mein Problem ist jetzt, das ich an der Stelle "button = (Button)getViewById(R.id.button);" von LogCat die Fehlermeldung "Null pointer Exception" bekomme, und die App nicht startet.
Meine Ahnung ist, das wenn ich "new MenuActivity();" aufrufe, die onCreate() Methode nie aufgerufen wird. Kann das sein? Und wenn ja, wie regelt man das dann, das ich dieses Menu als Singleton behandeln kann?
Kann mir von euch vllt jemand helfen? Ich bin echt am verzweifeln Tausend dank im Voraus.
da ich so zu sagen neu in der Android-Entwicklung bin, und nun mein erstes Projekt anliegt brauche ich das erstemal Hilfe. Ich hatte bisher das Buch "Einführung in die Android-Entwicklung" von Marko Gargenta durchgearbeitet, aber leider wurde dort mein Problem nicht mal im Ansatz angegangen.
Also, ich habe eine Activity (StartActivity) die beim Aufrufen der App gestartet wird, und eine weitere(MenuActivity), welche durch ein <include> in der XML Datei dieser Activity mit eingebettet ist. Soweit so gut.
Nun würde ich die MenuActivity gerne aus der StartActivity aufrufen bzw. deren Elemente(Buttons) abrufen, um auf diese OnClickListener zu setzen. Der Grund warum ich das so machen möchte ist, weil diese MenuActivity als Singleton bestehen soll. Heißt dieses Menü soll nur einmal existieren und ich kann es dann einfach auf die jeweils aufgerufene Activity setzen und die OnClickListener dort dynamisch setzen.
Meine Lösung sieht in etwa so aus (eben selbst zusammengeschrieben ohne IDE, da original Quellcode in der Firma liegt, Syntax Probleme sind im Original aber nicht vorhanden falls es hier der Fall sein sollte):
MainActivity
1class MainActivity extends Activity {
2
3MenuActivityController menuActivityController;
4
5public void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.MainActivity);
8 initialize();
9}
10
11public void initialize() {
12 menuActivityController = getMenuAcitivityControler();
13}
14
15public MenuActivityController getMenuAcitivityControler() {
16
17 if(menuActivityController == null) {
18 menuActivityController = MenuActivityController.getInstance();
19 menuActivityController.getMenuActivity.getButton().setOnClickListener(new OnClickListener() {
20 @Override
21 public void onClick(View v) {
22 // TODO
23 }
24 });
25 }
26}
27}
2
3MenuActivityController menuActivityController;
4
5public void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.MainActivity);
8 initialize();
9}
10
11public void initialize() {
12 menuActivityController = getMenuAcitivityControler();
13}
14
15public MenuActivityController getMenuAcitivityControler() {
16
17 if(menuActivityController == null) {
18 menuActivityController = MenuActivityController.getInstance();
19 menuActivityController.getMenuActivity.getButton().setOnClickListener(new OnClickListener() {
20 @Override
21 public void onClick(View v) {
22 // TODO
23 }
24 });
25 }
26}
27}
MenuActivityController
1public class MenuActivityController {
2
3 private MenuActivity menuActivity;
4 private static MenuActivityController menuActivityController = new MenuActivityController();
5
6 public MenuActivityController() {
7 menuActivity = getMenuActivity();
8 }
9
10 public MenuActivity getMenuActivity() {
11 if(menuActivity == null){
12 menuActivity = new MenuActivity();
13 }
14 return menuActivity;
15 }
16
17 public static MenuActivityController getInstance() {
18 return menuActivityController;
19 }
20}
2
3 private MenuActivity menuActivity;
4 private static MenuActivityController menuActivityController = new MenuActivityController();
5
6 public MenuActivityController() {
7 menuActivity = getMenuActivity();
8 }
9
10 public MenuActivity getMenuActivity() {
11 if(menuActivity == null){
12 menuActivity = new MenuActivity();
13 }
14 return menuActivity;
15 }
16
17 public static MenuActivityController getInstance() {
18 return menuActivityController;
19 }
20}
MenuActivity
1public class MenuActivity extends Activity() {
2 private Button button;
3
4 public void onCreate {
5 super.onCreate(savedInstanceState);
6 setContentView(R.layout.MenuActivity);
7 }
8
9 public Button getButton() {
10 if(button == null) {
11 button = (Button)getViewById(R.id.button);
12 }
13 return button;
14 }
15
16}
2 private Button button;
3
4 public void onCreate {
5 super.onCreate(savedInstanceState);
6 setContentView(R.layout.MenuActivity);
7 }
8
9 public Button getButton() {
10 if(button == null) {
11 button = (Button)getViewById(R.id.button);
12 }
13 return button;
14 }
15
16}
MainActivity.xml
1<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 android:layout_width="fill_parent" android:layout_height="fill_parent"
3 android:orientation="vertical">
4
5 <include layout="@layout/MenuActivity"/>
6
7
8</LinearLayout>
2 android:layout_width="fill_parent" android:layout_height="fill_parent"
3 android:orientation="vertical">
4
5 <include layout="@layout/MenuActivity"/>
6
7
8</LinearLayout>
Mein Problem ist jetzt, das ich an der Stelle "button = (Button)getViewById(R.id.button);" von LogCat die Fehlermeldung "Null pointer Exception" bekomme, und die App nicht startet.
Meine Ahnung ist, das wenn ich "new MenuActivity();" aufrufe, die onCreate() Methode nie aufgerufen wird. Kann das sein? Und wenn ja, wie regelt man das dann, das ich dieses Menu als Singleton behandeln kann?
Kann mir von euch vllt jemand helfen? Ich bin echt am verzweifeln Tausend dank im Voraus.
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.