0

と を使用appcompat-v7:22.2.0'していAppCompatActivityます。共有インテントを作成しようとすると、次の警告が表示されます。

W/MenuItemCompat: getActionProvider: item does not implement SupportMenuItem; returning null

さらに、共有アイコンがメニューに表示されている間は、タップしても何も起こらず、エラーも発生しません。多分これが唯一の問題、つまりタップを接続することですか?

appcompat サポート ライブラリの一部が欠けているようですが、関連するドキュメントが見つかりません

私の活動のコード

@Override                                                                                    
public boolean onCreateOptionsMenu(Menu menu) {                                              
    ...                                                                                 
    mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem);
    setShareIntent();                                                                        
    ...                                                 
}                                                                                            

private ShareActionProvider mShareActionProvider; 

private void setShareIntent() {                                                                        
    SubsamplingScaleImageView tempImage = (SubsamplingScaleImageView) findViewById(R.id.thumbnailView);
    if (mShareActionProvider != null && tempImage != null) {                                           

        Log.e(TAG, "this happened");                                                                   
        // Get access to the URI for the bitmap                                                        
        Uri bmpUri = getLocalBitmapUri(tempImage);                                                     
        if (bmpUri != null) {                                                                          
            // Construct a ShareIntent with link to image                                              
            Intent shareIntent = new Intent();                                                         
            shareIntent.setAction(Intent.ACTION_SEND);                                                 
            shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri);                                         
            shareIntent.setType("image*//*");                                                          
            mShareActionProvider.setShareIntent(shareIntent);                                          
        } else {                                                                                       
            // ...sharing failed, handle error                                                         
        }                                                                                              
    }else{                                                                                             
        Log.e(TAG, "this should not have happened");                                                   
    }                                                                                                  
} 

にキャストしてみましたが、違いはありませんでした

mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider((SupportMenuItem) shareItem); 

使用される輸入品

import android.app.Fragment;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v4.view.MenuItemCompat;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v7.widget.ShareActionProvider;
import android.widget.ImageView;  

編集:問題があったが変更がない場合に備えて、ActionBarActivityでこれを試しました。

4

2 に答える 2

0

ここで受け入れられた回答によると:例外: これはサポートされていません。MenuItemCompat.getActionProvider() を使用してください。

v7 バージョンの ShareActionProvider を使用する必要があります。私はあなたのインポートを再確認し、あなたが正しいものを持っていることを確認します.

于 2016-01-17T23:45:27.730 に答える