2015-02-02 9 views
0

로그인시 탐색 모음이있는 "홈"활동을 보여주는 응용 프로그램을 만들고 싶습니다. 안드로이드 스튜디오 탐색 창 템플릿을 사용하여 조각 사이를 전환하기 위해 편집했지만 지금은 로그인 할 때 응용 프로그램이 충돌합니다. 내가 뭘 잘못하고 있는지에 대한 도움이 인정됩니다.Android 응용 프로그램이 계속 충돌합니다

P. 나는 어리석은 질문을하기 때문에 아마추어 다.

package zade.example.com.zade; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.ActionBarActivity; 
import android.view.Menu; 
import android.view.MenuItem; 


public class Student_Home extends ActionBarActivity 
     implements NavigationDrawerFragment.NavigationDrawerCallbacks { 

    /** 
    * Fragment managing the behaviors, interactions and presentation of the navigation drawer. 
    */ 
    private NavigationDrawerFragment mNavigationDrawerFragment; 

    /** 
    * Used to store the last screen title. For use in {@link #restoreActionBar()}. 
    */ 
    private CharSequence mTitle; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_student__home); 

     mNavigationDrawerFragment = (NavigationDrawerFragment) 
       getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); 
     mTitle = getTitle(); 

     // Set up the drawer. 
     mNavigationDrawerFragment.setUp(
       R.id.navigation_drawer, 
       (DrawerLayout) findViewById(R.id.drawer_layout)); 
    } 

    @Override 
    public void onNavigationDrawerItemSelected(int position) { 

     Fragment objfragment = null; 

     switch (position) { 
      case 1: 
       objfragment = new MyFragment1(); 
       break; 
      case 2: 
       objfragment = new MyFragment2(); 
       break; 
      case 3: 
       objfragment = new MyFragment3(); 
       break; 
     } 
     // update the main content by replacing fragments 
     FragmentManager fragmentManager = getSupportFragmentManager(); 
     fragmentManager.beginTransaction() 
       .replace(R.id.container, objfragment) 
       .commit(); 
    } 

    public void onSectionAttached(int number) { 
     switch (number) { 
      case 1: 
       mTitle = getString(R.string.title_section1); 
       break; 
      case 2: 
       mTitle = getString(R.string.title_section2); 
       break; 
      case 3: 
       mTitle = getString(R.string.title_section3); 
       break; 
     } 
    } 

    public void restoreActionBar() { 
     ActionBar actionBar = getSupportActionBar(); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
     actionBar.setDisplayShowTitleEnabled(true); 
     actionBar.setTitle(mTitle); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     if (!mNavigationDrawerFragment.isDrawerOpen()) { 
      // Only show items in the action bar relevant to this screen 
      // if the drawer is not showing. Otherwise, let the drawer 
      // decide what to show in the action bar. 
      getMenuInflater().inflate(R.menu.student__home, menu); 
      restoreActionBar(); 
      return true; 
     } 
     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

} 

로그 캣입니다 : 내가 빨리 코드를 검토 한

E/AndroidRuntime﹕ FATAL EXCEPTION: main 
     Process: zade.example.com.zade, PID: 2052 
     java.lang.RuntimeException: Unable to start activity ComponentInfo{zade.example.com.zade/zade.example.com.zade.Student_Home}: android.view.InflateException: Binary XML file line #19: Error inflating class fragment 
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
       at android.app.ActivityThread.access$800(ActivityThread.java:144) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
       at android.os.Handler.dispatchMessage(Handler.java:102) 
       at android.os.Looper.loop(Looper.java:135) 
       at android.app.ActivityThread.main(ActivityThread.java:5221) 
       at java.lang.reflect.Method.invoke(Native Method) 
       at java.lang.reflect.Method.invoke(Method.java:372) 
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
     Caused by: android.view.InflateException: Binary XML file line #19: Error inflating class fragment 
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763) 
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
       at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228) 
       at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102) 
       at zade.example.com.zade.Student_Home.onCreate(Student_Home.java:29) 
       at android.app.Activity.performCreate(Activity.java:5933) 
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
                at android.app.ActivityThread.access$800(ActivityThread.java:144) 
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
                at android.os.Handler.dispatchMessage(Handler.java:102) 
                at android.os.Looper.loop(Looper.java:135) 
                at android.app.ActivityThread.main(ActivityThread.java:5221) 
                at java.lang.reflect.Method.invoke(Native Method) 
                at java.lang.reflect.Method.invoke(Method.java:372) 
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
     Caused by: java.lang.NullPointerException: Attempt to write to field 'android.support.v4.app.FragmentManagerImpl android.support.v4.app.Fragment.mFragmentManager' on a null object reference 
       at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:416) 
       at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:451) 
       at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:443) 
       at zade.example.com.zade.Student_Home.onNavigationDrawerItemSelected(Student_Home.java:60) 
       at zade.example.com.zade.NavigationDrawerFragment.selectItem(NavigationDrawerFragment.java:200) 
       at zade.example.com.zade.NavigationDrawerFragment.onCreate(NavigationDrawerFragment.java:79) 
       at android.support.v4.app.Fragment.performCreate(Fragment.java:1763) 
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:913) 
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 
       at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1206) 
       at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2159) 
       at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:297) 
       at android.support.v7.app.ActionBarActivity.onCreateView(ActionBarActivity.java:547) 
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) 
                at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
                at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
                at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
                at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
                at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228) 
                at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102) 
                at zade.example.com.zade.Student_Home.onCreate(Student_Home.java:29) 
                at android.app.Activity.performCreate(Activity.java:5933) 
                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
                at android.app.ActivityThread.access$800(ActivityThread.java:144) 
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
                at android.os.Handler.dispatchMessage(Handler.java:102) 
                at android.os.Looper.loop(Looper.java:135) 
                at android.app.ActivityThread.main(ActivityThread.java:5221) 
                at java.lang.reflect.Method.invoke(Native Method) 
                at java.lang.reflect.Method.invoke(Method.java:372) 
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
+0

첫 번째 단계는 [LogCat] (http://developer.android.com/tools/help/logcat.html)을 분석하여 여기에 게시하십시오. – Skynet

+1

@Skynet 질문에 추가했습니다. 한번 봐주세요. 고맙습니다. – user3745964

답변

3

- 나는 당신이 잊어 버린 분명 당신에게이 문제를 제공하지만 로그 캣 주문에 따라 정확한 라인을 볼 수 없었다 무언가를 초기화하거나 초기화를하기 전에 최근에 무언가를 초기화했거나 사용하려고 시도했습니다. 이로 인해 "ComponentInfo"오류가 발생하는 시간이 90 % 나됩니다.

나중에 자세히 살펴 보도록하겠습니다.하지만이 팁에서 직접 찾아서 고칠 수 있어야합니다.

최고, 맥.

+2

발견. 스위치에서 "case 0"대신 "case 1"을 사용하는 것을 어리석게 실수 한 것입니다. 그래도 고마워. – user3745964

+0

@ user3745964 예, logcat은 코드의 해당 부분에 문제가 있음을 보여주었습니다. 문제가 무엇인지 알아 내려고했지만, objfragment에 액세스하려고 시도했음을 보여 주었고 아직 null 일 것임을 나타냅니다. . –

관련 문제