2014-04-01 6 views
0

ive에 가시성을 구현하면 java.lang.NullPointerException이 발생하지만 며칠 동안이 작업을하고 있습니다. luck.i는 Facebook의 상태 변경 세션에 따라 메뉴 항목의 가시성을 구현하고 있습니다. 내 애플 리케이션.메뉴 항목

로그인 활동에서 메뉴 항목을 숨기면 액세스가 인증되면 물론 메뉴 자체가 표시됩니다.

메뉴 코드 :이 필드

MenuItem menu; 

그래서 당신은이 널 (null) 초기화되지 않은 코드에

@SuppressLint({ "InlinedApi", "NewApi" }) 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     getMenuInflater().inflate(R.menu.main, menu); 


    menu.findItem(R.id.action_previous).setEnabled(viewPager.getCurrentItem() > 0); 

     // Add either a "next" or "finish" button to the action bar, depending on which page 
     // is currently selected. 
    MenuItem item = menu.add(Menu.NONE, R.id.action_next, Menu.NONE, (viewPager.getCurrentItem() == adapter.getCount() - 1) 
         ? R.string.action_finish 
         : R.string.action_next); 

     item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 

     menu1 = menu; 
     return true; 

    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int itemId = item.getItemId(); 
     if (itemId == R.id.action_previous) { 
      // Go to the previous step in the wizard. If there is no previous step, 
      // setCurrentItem will do nothing. 
      viewPager.setCurrentItem(viewPager.getCurrentItem() - 1); 
      return true; 
     } else if (itemId == R.id.action_next) { 
      // Advance to the next step in the wizard. If there is no next step, setCurrentItem 
      // will do nothing. 
      viewPager.setCurrentItem(viewPager.getCurrentItem() + 1); 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 



************************* 

    ViewPager viewPager; 
PagerAdapter adapter; 
// public int mState = 1; 
Menu menu1; 



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



    int[] bookCover = new int[] { 

     R.drawable.image1, 
     R.drawable.image2, 
     R.drawable.image3, 

    }; 

    // Locate the ViewPager in viewpager_main.xml 
    viewPager = (ViewPager) findViewById(R.id.pager); 
    // Pass results to ViewPagerAdapter Class 
    adapter = new ViewPagerAdapter(this, bookCover); 
    // Binds the Adapter to the ViewPager 
    viewPager.setAdapter(adapter); 
    viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 

     @SuppressLint("NewApi") 
     @Override 
     public void onPageSelected(int position) { 
     // When changing pages, reset the action bar actions since they are dependent 
     // on which page is currently active. An alternative approach is to have each 
     // fragment expose actions itself (rather than the activity exposing actions), 
     // but for simplicity, the activity provides the actions in this sample. 
      //mState = 1; 
     invalidateOptionsMenu(); 
     } 

    }); 




    Button facebook_connect = (Button) findViewById(R.id.facebook_login); 
    facebook_connect.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      if (isFacebookConnected()) { 
       disConnectFacebook(); 
      } else { 
       connectFacebook(); 
      } 

     } 
    }); 
} 


******************** 
facebook onState: 

private void onSessionStateChange(Session session, SessionState state, Exception exception) { 
     // Check if the user is authenticated and 
     // a deep link needs to be handled. 
     if (state.isOpened()) { 
      MenuItem item = menu1.findItem(R.id.action_next); 
      item.setVisible(true); 
      viewPager.setVisibility(View.VISIBLE); 

     } else if (state.isClosed()) { 

      // Make the recipe list hidden 
// 
//    MenuItem item = menu.findItem(R.menu.main); 
//    item.setVisible(false); 
//    viewPager.setVisibility(View.INVISIBLE); 
     } 
    } 

enter image description here

+0

logcat 게시 – kstachniuk

+0

MenuItem 메뉴를 선언했지만 초기화하지 않았습니다. onCreateOptionsMenu() 안에 this.menu = menu 넣기 – Tsunaze

+0

@kstachniuk 님이 logcat을 추가했습니다. – jovs

답변

1

나는 단지 하나 개의 활동을 얻었다 se를 호출하려고 할 때 onSessionStateChange()의 포인터 예외 tVisible()

+0

제안을했지만 여전히 javanullpointerexception을 적용했고, 코드도 편집했습니다. – jovs