我创建了一个测试应用程序,以了解如何调用本机库,选择图像并将其显示在imageView上。
第一次测试
我有一个简单的设置。一个活动和一个片段(驻留在该活动中),其中包含一个按钮(调用图库意图)和一个用于所选图像的imageView。这非常有效。
第二次测试
通过向主要活动添加另一个活动和标签主机来稍微更改设置。这个新的空活动将是启动活动,它的唯一目的是切换到包含调用库意图的片段的主活动。一切正常,直到我从图库中选择图像。选择图像后,它不会返回到我的测试应用程序。这就像一个奇怪的软崩溃。 Logcat不显示任何错误,因此有点难以排除故障。我还在OnActivityResult
覆盖的每一行上放置了断点,但它们从未命中过。
我希望有人能说清楚这件事。
SDK版本为23,构建工具为23.0.3
到目前为止我得到了什么:
Main2Activity (启动活动)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
ActivityConfig.CreateActivity(MainActivity.class, this, true);
}
如果您想知道CreateActivity
做了什么:
public static void CreateActivity(Class activityClass, Context context,
boolean finishPreviousActivity)
{
Intent intent = new Intent(context, activityClass);
if (finishPreviousActivity)
{
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
}
context.startActivity(intent);
}
MainActivity (我只使用tabhost上的第三个位置。这就是片段的位置)
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabHost tabHost = (TabHost) findViewById(R.id.tabHost);
tabHost.setup();
tabHost.addTab(Tabs.CreateTab("T1", R.id.tabFrag2, tabHost));
tabHost.addTab(Tabs.CreateTab("T2", R.id.tabFrag3, tabHost));
tabHost.addTab(Tabs.CreateTab("T3", R.id.tabFrag, tabHost));
tabHost.setCurrentTab(2);
}
片段
private ImageView imageView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.fragment_blank, container, false);
Button button = (Button)view.findViewById(R.id.Btn);
imageView = (ImageView)view.findViewById(R.id.Img);
button.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
intent.setType("image/*");
startActivityForResult(intent, 100);
}
});
return view;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 100)
imageView.setImageURI(data.getData());
}
答案 0 :(得分:0)
经过多次跟踪错误后,我注意到在选择图片后,它又回到了启动活动,但没有通过onCreate
或者它被覆盖onActivityResult
。它经历了onResult
。我的结论是以一种只需要一个活动的方式重新设计整个界面