我根据来自api的字段类型动态地向LinearLayout添加视图。
如果字段类型指示' image'我创建了一个图像选择按钮并将其添加到视图中。
我还创建了一个imageview,所以当调用onActivityResult时,我可以将选择的图像分配给该imageview。
然而, 要找到动态创建的imageview,我需要传递某种标识符。
不知何故putExtra()函数没有传递id。
初始变种:
<?php
namespace App\Http\Controllers;
class MyController extends Controller {
public function __construct() {
$this->middleware('guest', ['except' => [
'redirectToFacebook', 'handleFacebookCallback', 'handleFacebookUnlink'
]]);
}
}
动态字段创建:
private static final int SELECT_SINGLE_PICTURE = 101;
public static final String IMAGE_TYPE = "image/*";
private ImageView selectedImagePreview;
protected int tmpviewid;
onActivityResult:
LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayout2);
TextView tmltname = new TextView(NewJobActivity.this);
tmltname.setText(vwa.getName());
ll.addView(tmltname);
Iterator it = attributes.entrySet().iterator();
while (it.hasNext()) {
if(val.getType().equals("image") ) {
Button btn = new Button(NewJobActivity.this);
btn.setText(R.string.select_picture);
ImageView iv = new ImageView(NewJobActivity.this);
iv.setId(View.generateViewId());
tmpviewid = iv.getId();
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Intent intent = new Intent();
intent.setType(IMAGE_TYPE);
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.putExtra("imageid", tmpviewid);
startActivityForResult( Intent.createChooser( intent, getString(R.string.select_picture)), SELECT_SINGLE_PICTURE );
}
});
ll.addView(btn);
ll.addView(iv);
}
图像选择正在运行并且已填充selectedImageUri,但为什么data.getIntExtra没有检索传递的myviewid? (它总是得到默认值-1但是tmpviewid得到有效的id&#39; s(1,2,3等......))
所有已接受的解决方案都表明我的代码应该有效。
也许还有其他事情发生了?
或者我可能走错了路?
我注意到其他地方的get-和setTag可能也是一个解决方案..但我仍然需要以某种方式传递它。
答案 0 :(得分:0)
好的,现在我得到了照片;)
你不能传递自定义的额外参数,你可以,但被调用的活动不会使用它。当返回到调用者时,它将仅发送活动的可用额外结果...
如果您在Manifest中将Activity设置为SingleInstance,则不会在结果上重新创建它,因此您可以添加公共类变量“public static int referImage = 0”并使用单击的ID在按钮单击上设置它。然后当你得到结果时,你将在这个变量上有图像id引用。
VAADIN
如果这个解决方案有效,我不会感到害羞,但是这种定制的Extra cannob会以这种方式解决。
让我知道,我会尝试另一种方式。
示例:
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
referImage = tmpviewid;
....
当用户点击Button时,它将设置referImage = tmpviewid;
当Activity返回Result时,referImage的最后一个值将是Button用户点击。
onActivityResult你只需阅读referImage值。