Reputation: 175
So, I'm a bit of a noob here, so I need some help. I was trying to make an app, yet keep getting a NullPointerException. The log:
05-03 18:48:11.283: E/AndroidRuntime(8187): FATAL EXCEPTION: main
05-03 18:48:11.283: E/AndroidRuntime(8187): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ironcake.jsynxs/com.ironcake.jsynxs.MainActivity}: java.lang.NullPointerException
05-03 18:48:11.283: E/AndroidRuntime(8187): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2245)
05-03 18:48:11.283: E/AndroidRuntime(8187): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2295)
05-03 18:48:11.283: E/AndroidRuntime(8187): at android.app.ActivityThread.access$700(ActivityThread.java:150)
05-03 18:48:11.283: E/AndroidRuntime(8187): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)
05-03 18:48:11.283: E/AndroidRuntime(8187): at android.os.Handler.dispatchMessage(Handler.java:99)
05-03 18:48:11.283: E/AndroidRuntime(8187): at android.os.Looper.loop(Looper.java:176)
05-03 18:48:11.283: E/AndroidRuntime(8187): at android.app.ActivityThread.main(ActivityThread.java:5279)
05-03 18:48:11.283: E/AndroidRuntime(8187): at java.lang.reflect.Method.invokeNative(Native Method)
05-03 18:48:11.283: E/AndroidRuntime(8187): at java.lang.reflect.Method.invoke(Method.java:511)
05-03 18:48:11.283: E/AndroidRuntime(8187): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
05-03 18:48:11.283: E/AndroidRuntime(8187): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
05-03 18:48:11.283: E/AndroidRuntime(8187): at dalvik.system.NativeStart.main(Native Method)
05-03 18:48:11.283: E/AndroidRuntime(8187): Caused by: java.lang.NullPointerException
05-03 18:48:11.283: E/AndroidRuntime(8187): at com.ironcake.jsynxs.MainActivity.addDrawerItems(MainActivity.java:46)
05-03 18:48:11.283: E/AndroidRuntime(8187): at com.ironcake.jsynxs.MainActivity.onCreate(MainActivity.java:35)
05-03 18:48:11.283: E/AndroidRuntime(8187): at android.app.Activity.performCreate(Activity.java:5267)
05-03 18:48:11.283: E/AndroidRuntime(8187): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
05-03 18:48:11.283: E/AndroidRuntime(8187): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
05-03 18:48:11.283: E/AndroidRuntime(8187): ... 11 more
My Main Activity:
public class MainActivity extends ActionBarActivity {
private ListView mDrawerList;
private DrawerLayout mDrawerLayout;
private ArrayAdapter<String> mAdapter;
private ActionBarDrawerToggle mDrawerToggle;
private String mActivityTitle;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
setContentView(R.layout.activity_main);
mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
mActivityTitle = getTitle().toString();
addDrawerItems();
setupDrawer();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
private void addDrawerItems() {
//names on list
String[] menuList = { "Sync", "Prefrences", "Settings" };
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, menuList);
mDrawerList.setAdapter(mAdapter);
mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, "Time for an upgrade!", Toast.LENGTH_SHORT).show();
}
});
}
private void setupDrawer() {
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.string.drawer_open, R.string.drawer_close) {
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getSupportActionBar().setTitle("Menu");
}
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
getSupportActionBar().setTitle(mActivityTitle);
}
};
mDrawerToggle.setDrawerIndicatorEnabled(true);
mDrawerLayout.setDrawerListener(mDrawerToggle);
}
}
Sorry if this is a bit of a stupid question, but I have been stuck at this for awhile now, so any help is welcome Thanks
Upvotes: 1
Views: 86
Reputation: 159854
mDrawerList
has not been initialized
protected void onCreate(Bundle savedInstanceState) {
....
mDrawerList = (ListView) findViewById(R.id.drawer_list); // or appropriate constant from XML
Upvotes: 1
Reputation: 14810
mDrawerList
is not initialized in your code. That is why you are getting an NPE (NullPointerException)
You'll have to use, for eg
mDrawerList = (ListView) findViewById(R.id.listview);
before using it.
Upvotes: 1