2016-03-24 1 views
-2

私はこれにアイコンその番組iは膨張させるためのコードの行を追加したオーバーフローボタンUnsuportedOperationException

import android.content.Intent; 
import android.support.design.widget.NavigationView; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.widget.ShareActionProvider; 

public class MainActivity extends AppCompatActivity { 

private ShareActionProvider mShareActionProvider; 

DrawerLayout drawerLayout; 
ActionBarDrawerToggle actionBarDrawerToggle; 
Toolbar toolbar; 
FragmentTransaction fragmentTransaction; 
NavigationView navigationView; 

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

    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout,toolbar,R.string.drawer_open,R.string.drawer_close); 
    navigationView = (NavigationView) findViewById(R.id.navigation_view); 
    navigationView.setNavigationItemSelectedListener(
      new NavigationView.OnNavigationItemSelectedListener() { 



       @Override 
       public boolean onNavigationItemSelected(MenuItem item) { 
        switch (item.getItemId()) { 
         case R.id.home_id: 
          fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
          fragmentTransaction.replace(R.id.main_container, new HomeFragment()); 
          fragmentTransaction.commit(); 
          getSupportActionBar().setTitle("Home Fragment"); 
          item.setChecked(true); 
          drawerLayout.closeDrawers(); 
          break; 

         case R.id.message_id: 
          fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
          fragmentTransaction.replace(R.id.main_container, new FatCalculator()); 
          fragmentTransaction.commit(); 
          getSupportActionBar().setTitle("Fat"); 
          item.setChecked(true); 
          drawerLayout.closeDrawers(); 
          break; 

         case R.id.setting_id: 
          fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
          fragmentTransaction.replace(R.id.main_container, new FoodCalculator()); 
          fragmentTransaction.commit(); 
          getSupportActionBar().setTitle("Food"); 
          item.setChecked(true); 
          drawerLayout.closeDrawers(); 
          break; 

         case R.id.storage_id: 
          fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
          fragmentTransaction.replace(R.id.main_container, new FoodStorage()); 
          fragmentTransaction.commit(); 
          getSupportActionBar().setTitle("Storage"); 
          item.setChecked(true); 
          drawerLayout.closeDrawers(); 
          break; 

         case R.id.rate_id: 
          fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
          fragmentTransaction.replace(R.id.main_container, new RateME()); 
          fragmentTransaction.commit(); 
          getSupportActionBar().setTitle("Rate"); 
          item.setChecked(true); 
          drawerLayout.closeDrawers(); 
          break; 
        } 


        return true; 
       } 
      }); 

    drawerLayout.setDrawerListener(actionBarDrawerToggle); 
    fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.add(R.id.main_container, new HomeFragment()); 
    fragmentTransaction.commit(); 
    getSupportActionBar().setTitle("Home"); 
} 

この例外エラーを追加したとき、私はオーバーフローボタン に共有アイテムを追加したアクションバーの操作中メニュー

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
    // Locate MenuItem with ShareActionProvider 

MenuItem item = menu.findItem(R.id.Share_id); 


// Fetch and store ShareActionProvider 
mShareActionProvider = (ShareActionProvider) item.getActionProvider(); 

return true; 
} 
// Call to update the share intent 
private void setShareIntent(Intent shareIntent) { 
    if (mShareActionProvider != null) { 
     mShareActionProvider.setShareIntent(shareIntent); 
    } 
} 

上記の行

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

} 

メニューファイルはここに

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

<item 
    android:id="@+id/setting_id" 
    android:title="Setting" 
    app:showAsAction="always" /> 
<item 
    android:id="@+id/About_id" 
    android:title="About" 
    app:showAsAction="always" /> 

<item 
    android:id="@+id/Contact_id" 
    android:title="Conttact" 
    app:showAsAction="never" /> 
<item 
    android:id="@+id/Share_id" 
    android:title="" 
    android:icon="@drawable/share" 
    app:showAsAction="always" 
    android:actionProviderClass= 
     "android.widget.ShareActionProvider" 
    /> 

</menu> 

logcat

java.lang.UnsupportedOperationException: This is not supported,use MenuItemCompat.getActionProvider() at android.support.v7.view.menu.MenuItemImpl.getActionProvider(MenuItemImpl.java:645) 
                       at com.example.rajafarid.navigation.MainActivity.onCreateOptionsMenu(MainActivity.java:110) 
                       at android.app.Activity.onCreatePanelMenu(Activity.java:2921) 
                       at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:341) 
                       at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:85) 
                       at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:258) 
                       at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:85) 
                       at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:454) 
                       at android.support.v7.app.ToolbarActionBar$1.run(ToolbarActionBar.java:61) 
                       at android.os.Handler.handleCallback(Handler.java:739) 
                       at android.os.Handler.dispatchMessage(Handler.java:95) 
                       at android.os.Looper.loop(Looper.java:145) 
                       at android.app.ActivityThread.main(ActivityThread.java:5832) 
                       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:1399) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
+0

@selvin私はそれを読んだけど解決できませんでした。 –

答えて

0

EDITです:

MenuItemCompat.getActionProvider(item); 

また、このインポート:

android.support.v7.widget.ShareActionProvider; 
この

使用

の代わりに

import android.widget.ShareActionProvider; 

それは機能していますか?

+0

それはシンボルを再解決していません.....私はこれを次のように試しました.... MenuItemCompat item = menu.findItem(R .id.Share_id);また、mShareActionProvider =(ShareActionProvider)としてランダムに試しました。MenuItemCompat.getActionProvider();しかし、何も起こらない –

+0

あなたの言ったように私の編集した答え – mmcoder10

+0

をチェックしてください.... mShareActionProvider =(ShareActionProvider)MenuItemCompat.getActionProvider(item); ....このエラーは..... .....エラー:(113,82)エラー:inconvertible型 required:ShareActionProvider が見つかりました:ActionProvider –

関連する問題