我正在尝试接收分享意图,但我遇到的情况是我无法理解。目前我的应用程序在其他应用程序中显示为共享选项,我的活动收到这样的意图就好了。但是,我遇到了将此意图传递给我想要处理它的Fragment的问题。也就是说,片段未及时加载,我的活动将其传递出去。
以下是我在活动onCreate()
中的内容:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start_screen);
if (savedInstanceState == null)
{
Log.i(TAG, "Loading new fragment");
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment(), "tag")
.commit();
}
PlaceholderFragment frag = (PlaceholderFragment) getFragmentManager().findFragmentByTag("tag");
Log.i(TAG, "Fragment Exists: " + (frag != null));
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if(Intent.ACTION_SEND.equals(action) && type != null)
{
if("text/plain".equals(type))
{
//handleIntent(intent); // Doesn't do anything right now
}
}
}
这是我在另一个应用程序中点击Share并告诉它将文本发送到我的应用程序时的日志输出:
I/ActivityStartScreen﹕ Loading new fragment
I/ActivityStartScreen﹕ Fragment Exists: false
I/ActivityStartScreen﹕ Handling Intent
I/PlaceholderFragment﹕ Loading Fragment View
正如您所看到的,活动想要在Fragment准备好之前切换意图,即使我在处理意图之前已经将片段添加到布局中。问题的一部分是FragmentTransaction需要时间提交的事实吗?这是我能想象无效检查失败的唯一原因......
在这种情况下我该怎么做才能在准备好之后将意图传递给Fragment?