user3617132
user3617132

Reputation: 175

Android/Java NullPointerException

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

Answers (3)

Reimeus
Reimeus

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

Lal
Lal

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

Msk
Msk

Reputation: 857

In your code mDrawerList has not been initialized anywhere.

Upvotes: 0

Related Questions