我正在关注Udacity的一个关于构建Android应用程序的课程(在这种情况下是天气)。我在实施Share操作时遇到了麻烦。在从另一个论坛获得一些建议后,我将min SDK版本从10或11更改为17,因为这只是一个学习活动。目前,我有"分享"按钮显示在操作栏中,但点击它不会做任何事情。我尝试将它放在溢出菜单中,但仍然没有。我尝试了一些调试,但我不知道按钮点击应该在哪里处理;调试器通过并创建shareIntent对象,但似乎没有任何事情发生。我查看了this doc,但是当我尝试在视图的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;
}
答案 0 :(得分:0)
目前,我有"分享"按钮显示在操作栏中,但点击它不会做任何事情。
确保您正在浏览调用setShareIntent()
的代码分支,并确保您正在测试的设备或模拟器具有来自支持ACTION_SEND
text/plain
的某个应用的活动}。此外,如果只有一项活动支持ACTION_SEND
text/plain
,则该活动的图标将显示在ShareActionProvider
共享图标旁边,您可以点按活动图标以与之分享那项活动。
我尝试了一些调试,但我不知道按钮点击应该在哪里处理
这是ShareActionProvider
。
我查看了这个文档,但是当我尝试在视图的onOptionsItemSelected中处理共享时,我在调用createShareIntent时得到一个空指针异常。
onOptionsItemSelected()
适用于常规操作项,而不是操作提供程序。
答案 1 :(得分:0)
事实证明我已将android:actionProviderClass="android.widget.ShareActionProvider
放在布局XML文件中而不是菜单中。我不认为我所采取的Udacity课程提到了正确的位置(可能是由于兼容性问题)。