2013-12-19 3 views
-1

탐색 서랍이있는 간단한 앱을 개발하려고합니다. 내 모든 최고의보기 많은 기사하지만 난이 내 코드에서 오류가 없다하지만 에뮬레이터에서 내 응용 프로그램을 실행할 때 실행 시간 오류가 표시 실패 ... 여기 내 안드로이드 앱에 오류가 발생했습니다

내 로그 캣 나를 도와 plzz 않습니다

12-19 15:07:20.562: E/AndroidRuntime(1067):  FATAL EXCEPTION: main 

12-19 15:07:20.562: E/AndroidRuntime(1067):  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dhruv.sms/com.dhruv.sms.MainActivity}: java.lang.NullPointerException 

12-19 15:07:20.562: E/AndroidRuntime(1067):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 

12-19 15:07:20.562: E/AndroidRuntime(1067):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 

12-19 15:07:20.562: E/AndroidRuntime(1067):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 

12-19 15:07:20.562: E/AndroidRuntime(1067):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 

12-19 15:07:20.562: E/AndroidRuntime(1067):  at android.os.Handler.dispatchMessage(Handler.java:99) 

12-19 15:07:20.562: E/AndroidRuntime(1067):  at android.os.Looper.loop(Looper.java:137) 

12-19 15:07:20.562: E/AndroidRuntime(1067):  at android.app.ActivityThread.main(ActivityThread.java:5039) 

12-19 15:07:20.562: E/AndroidRuntime(1067):  at java.lang.reflect.Method.invokeNative(Native Method) 

12-19 15:07:20.562: E/AndroidRuntime(1067):  at java.lang.reflect.Method.invoke(Method.java:511) 

12-19 15:07:20.562: E/AndroidRuntime(1067):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
12-19 15:07:20.562: E/AndroidRuntime(1067):  at com.android.internal.os.ZygoteInit.main 
(ZygoteInit.java:560) 
12-19 15:07:20.562: E/AndroidRuntime(1067):  at dalvik.system.NativeStart.main(Native Method) 

12-19 15:07:20.562: E/AndroidRuntime(1067): Caused by: java.lang.NullPointerException 

12-19 15:07:20.562: E/AndroidRuntime(1067):  at com.dhruv.sms.MainActivity.onCreate(MainActivity.java:80) 

12-19 15:07:20.562: E/AndroidRuntime(1067):  at android.app.Activity.performCreate(Activity.java:5104) 

12-19 15:07:20.562: E/AndroidRuntime(1067):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 

12-19 15:07:20.562: E/AndroidRuntime(1067):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 

12-19 15:07:20.562: E/AndroidRuntime(1067):  ... 11 more 

파일 그리고 이것은 내 자바 파일

package com.dhruv.sms; 



import android.app.Activity; 
import android.app.Fragment; 
import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
import android.content.res.Configuration; 
import android.os.Bundle; 
import android.support.v4.app.ActionBarDrawerToggle; 
import android.support.v4.widget.DrawerLayout; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class MainActivity extends Activity { 

    // Within which the entire activity is enclosed 
    private DrawerLayout mDrawerLayout; 

    // ListView represents Navigation Drawer 
    private ListView mDrawerList; 

    // ActionBarDrawerToggle indicates the presence of Navigation Drawer in the action bar 
    private ActionBarDrawerToggle mDrawerToggle; 

    // Title of the action bar 
    private String mTitle = ""; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      mTitle = "App title"; 
      getActionBar().setTitle(mTitle); 

      // Getting reference to the DrawerLayout 
      mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

      mDrawerList = (ListView) findViewById(R.id.conversation_list); 

      // Getting reference to the ActionBarDrawerToggle 
      mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
          R.drawable.ic_launcher, R.string.drawer_open, 
          R.string.drawer_close) { 

        /** Called when drawer is closed */ 
        public void onDrawerClosed(View view) { 
          getActionBar().setTitle(mTitle); 
          invalidateOptionsMenu(); 

        } 

        /** Called when a drawer is opened */ 
        public void onDrawerOpened(View drawerView) { 
          getActionBar().setTitle("App title"); 
          invalidateOptionsMenu(); 
        } 

      }; 

      // Setting DrawerToggle on DrawerLayout 
      mDrawerLayout.setDrawerListener(mDrawerToggle); 

      // Creating an ArrayAdapter to add items to the listview mDrawerList 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), 
          R.layout.drawer_list_item, getResources().getStringArray(R.array.sidebar_list_array)); 

      // Setting the adapter on mDrawerList 
      mDrawerList.setAdapter(adapter); 

      // Enabling Home button 
      getActionBar().setHomeButtonEnabled(true); 

      // Enabling Up navigation 
      getActionBar().setDisplayHomeAsUpEnabled(true); 

      // Setting item click listener for the listview mDrawerList 
      mDrawerList.setOnItemClickListener(new OnItemClickListener() { 

        @Override 
        public void onItemClick(AdapterView<?> parent, View view, 
            int position, long id) { 

          // Getting an array of rivers 
          String[] menuItems = getResources().getStringArray(R.array.sidebar_list_array); 

          // Currently selected river 
          mTitle = menuItems[position]; 

          // Creating a fragment object 
          Fragment rFragment = new Fragment(); 

          // Passing selected item information to fragment 


          // Getting reference to the FragmentManager 
          FragmentManager fragmentManager = getFragmentManager(); 

          // Creating a fragment transaction 
          FragmentTransaction ft = fragmentManager.beginTransaction(); 

          // Adding a fragment to the fragment transaction 
          ft.replace(R.id.content_frame, rFragment); 

          // Committing the transaction 
          ft.commit(); 

          // Closing the drawer 
          mDrawerLayout.closeDrawer(mDrawerList); 

        } 
      }); 
    } 



    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
      super.onPostCreate(savedInstanceState); 
      mDrawerToggle.syncState(); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
      if (mDrawerToggle.onOptionsItemSelected(item)) { 
        return true; 
      } 
      return super.onOptionsItemSelected(item); 
    } 

    /** Called whenever we call invalidateOptionsMenu() */ 
    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
      // If the drawer is open, hide action items related to the content view 
      boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); 

      menu.findItem(R.id.action_settings).setVisible(!drawerOpen); 
      return super.onPrepareOptionsMenu(menu); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
      getMenuInflater().inflate(R.menu.activity_main, menu); 
      return true; 
    } 
} 

답변

1

변수 mDrawerList 힘이다 올바르게 초기화되지 않습니다. null 일 수 있으므로 NullPointerException이 발생합니다.

0

코드에 오류가 있습니다. 스택 추적에서이를 보여줍니다. 그리고 여기에 관련 정보를

12-19 15:07:20.562: E/AndroidRuntime(1067): Caused by: java.lang.NullPointerException 

12-19 15:07:20.562: E/AndroidRuntime(1067):  at com.dhruv.sms.MainActivity.onCreate(MainActivity.java:80) 

라인 (80) 쇼의 mDrawerList에 액세스하고 있습니다. 그것은

0

오류가

mDrawerList.setAdapter(adapter); 

mDrawerList 참조가 잘못되었거나 어댑터가리스트 뷰를 초기화하지 않은

0
private ListView mDrawerList=new ListView(); 

잘못된 코드의이 부분에 널 (null)입니다.

관련 문제