我正在学习关于 Udacity 的关于构建 Android 应用程序的课程(在这种情况下是天气)。我在执行分享操作时遇到了问题。在从另一个论坛获得一些建议后,我将最小 SDK 版本从 10 或 11 更改为 17,因为这只是一个学习活动。目前,我在操作栏中显示了“共享”按钮,但点击它什么也没做。我试着把它放在溢出菜单中,但仍然没有。我尝试了一些调试,但我不知道应该在哪里处理按钮单击;调试器通过并创建 shareIntent 对象,但它似乎没有发生任何事情。我查看了这个文档,但是当我尝试处理视图的 onOptionsItemSelected 中的共享时,在调用 createShareIntent 时出现空指针异常。
这是嵌套片段的 onCreateOptionsMenu:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.detail_fragment, menu);
MenuItem item = menu.findItem(R.id.action_share);
ShareActionProvider mShareActionProvider = new ShareActionProvider(getActivity());
if(mShareActionProvider != null) {
mShareActionProvider.setShareIntent(createShareIntent());
} else {
Log.d(LOG_TAG, "Share action provider is null");
}
}
这是包含视图的 onOptionsItemSelected,有问题的代码已注释掉:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
startActivity(new Intent(this, SettingsActivity.class));
return true;
} else if (id == R.id.action_share) {
//DetailFragment details = (DetailFragment) getFragmentManager().findFragmentByTag("detailFragment");
//startActivity(details.createShareIntent());
}
return super.onOptionsItemSelected(item);
}
这是 createShareIntent 方法:
private Intent createShareIntent() {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, mForecastStr + FORECAST_SHARE_HASHTAG);
return shareIntent;
}