3

アプリの開始時に画像を期待しているため、共有アクションプロバイダーで null ポインターを取得しています。後でしか提供できません。

これが私のコードです

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate menu resource file.
    getMenuInflater().inflate(R.menu.menu, menu);

    // Locate MenuItem with ShareActionProvider
    MenuItem item = menu.findItem(R.id.menu_item_share);

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

    return true;
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("image/*");
    Uri uri = Uri.fromFile(new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),
            getBitmapName()));
    shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.mailSubject));
    setShareIntent(shareIntent);

    return true;
}



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

1 に答える 1

0

ちょっとvineet共有インテントに送信する前に、アプリで画像を初期化する必要があると思います。したがって、共有インテントを送信する代わりに、作成時に URI から画像を取得し、bm=BitmapFactory.decodeResource(getResources(),R.drawable.image); を使用して設定します。

これが機能するかどうかはわかりませんが、共有インテントが null ポインター例外を取得する唯一の理由は、存在しないか初期化されていない画像によるものです。

お役に立てれば

ダグ

于 2014-08-28T19:43:31.197 に答える