2013-04-18 64 views
0

我可能會混淆我的術語,但是我創建了一個android應用程序,我想封裝一些例程功能。比如我的actionBar。起初,我的所有活動都有代碼,如果我改變了一件事,我必須在其他地方改變它。我想創建一個NavigationActionBarManager.java文件來處理inital設置,onNavigationListener,setListNavigationCallbacks等如何創建自定義類作爲子例程

這裏的類迄今:

import android.app.ActionBar; 
import android.app.ActionBar.OnNavigationListener; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.widget.ArrayAdapter; 
import android.widget.SpinnerAdapter; 

public class NavigationActionBarManager extends Activity { 

    public ActionBar actionBar = getActionBar(); // actionbar object 

    // METHOD: display 
    public void display() { 
     actionBar.setDisplayShowTitleEnabled(false); 
     actionBar.setDisplayHomeAsUpEnabled(true); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
    } 

    // METHOD: inflate 
    public void inflate(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_adventurers_new, menu); 
    } 

    // METHOD: listen 
    public void listen() { 
     SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.array_character_views, android.R.layout.simple_spinner_dropdown_item); 

     OnNavigationListener mOnNavigationListener = new OnNavigationListener() { 
      //String[] strings = getResources().getStringArray(R.array.array_character_views); 

      @Override 
      public boolean onNavigationItemSelected(int position, long itemId) { 
       Intent nextScreen = null; 
       switch(position) { 
       case 0: 
        break; 
       case 1: 
        nextScreen = new Intent(getApplicationContext(), AdventurersNewAbilitiesActivity.class); 
        break; 
       case 2: 
        break; 
       } 

       if(nextScreen != null) { 
        startActivity(nextScreen); 
       } 

       return false; 
      } 
     }; 

     actionBar.setListNavigationCallbacks(mSpinnerAdapter, mOnNavigationListener); 
    } 

} 

早在我的活動課,我想把它作爲應用例如:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_adventurer_new_character); 

    navBar.display(); 
    navBar.listen(); 

} 

我遇到了一個錯誤,我不明白LogCat的輸出。這裏是LogCat輸出:

04-17 23:12:01.110: E/AndroidRuntime(14013): FATAL EXCEPTION: main 
04-17 23:12:01.110: E/AndroidRuntime(14013): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.app/com.app.AdventurersNewCharacterActivity}: java.lang.NullPointerException 
04-17 23:12:01.110: E/AndroidRuntime(14013): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1903) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2004) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at android.app.ActivityThread.access$600(ActivityThread.java:132) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at android.os.Looper.loop(Looper.java:137) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at android.app.ActivityThread.main(ActivityThread.java:4580) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at java.lang.reflect.Method.invokeNative(Native Method) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at java.lang.reflect.Method.invoke(Method.java:511) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at dalvik.system.NativeStart.main(Native Method) 
04-17 23:12:01.110: E/AndroidRuntime(14013): Caused by: java.lang.NullPointerException 
04-17 23:12:01.110: E/AndroidRuntime(14013): at android.app.Activity.initActionBar(Activity.java:2071) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at android.app.Activity.getActionBar(Activity.java:2058) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at com.app.NavigationActionBarManager.<init>(NavigationActionBarManager.java:13) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at com.app.AdventurersNewCharacterActivity.<init>(AdventurersNewCharacterActivity.java:13) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at java.lang.Class.newInstanceImpl(Native Method) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at java.lang.Class.newInstance(Class.java:1319) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at android.app.Instrumentation.newActivity(Instrumentation.java:1025) 
04-17 23:12:01.110: E/AndroidRuntime(14013): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1894) 
04-17 23:12:01.110: E/AndroidRuntime(14013): ... 11 more 
+0

是什麼樣'//方法的評論點

文檔? – Patashu 2013-04-18 02:40:48

+1

另外,什麼是錯誤?發佈logcat的輸出? – Patashu 2013-04-18 02:42:21

+0

是的,logcat通過提供堆棧跟蹤來指向問題的根源。你可以發佈logcat堆棧跟蹤嗎? – orb 2013-04-18 02:45:23

回答

相關問題