2014-04-01 20 views
0

上實現了可見性時,我得到了java.lang.NullPointerException異常我已經在這一兩天工作,但沒有luck.i實現菜單項的可見性根據其狀態更改Facebook的會話和我的應用程序當我在菜單項

我只需要隱藏我的登錄活動的菜單項,然後一旦訪問通過身份驗證,它將顯示當然菜單本身。

我只拿到了一個活動:爲菜單代碼

@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菜單,但是你沒有初始化它。把this.menu =菜單放入你的onCreateOptionsMenu() – Tsunaze

+0

@kstachniuk添加logcat – jovs

回答

1

在你的代碼,這個領域沒有初始化

MenuItem menu; 

所以你必須空當您嘗試調用se時,onSessionStateChange()中的指針異常tVisible()

+0

我應用了你的建議,但仍然javanullpointerexception,我也編輯了我的代碼 – jovs

相關問題