[英]How do I pass an intent from an activity to a class extending LinearLayout
[英]how to access the camera from class extending LinearLayout?
对不起,我是 java 新手,我需要使用 class 扩展 LinearLayout 的相机。
public class ImagePicker extends LinearLayout {
...
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
try{
startActivityForResult(takePhotoIntent, REQUEST_TAKE_PHOTO);
}catch (ActivityNotFoundException e){
e.printStackTrace();
}
}
});
...
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
这些方法需要一个 class 扩展 Activity。 我怎样才能正确使用它们? 谢谢
有(至少)两种选择可以实现这一目标:
ImagePicker
中发送的,但结果仍然必须在Activity
的onActivityResult
中接收。 最好从您请求的地方接收相同的 class 的结果。setOnClickListener
。 下面是一些示例代码,演示了如何执行此操作: ImagePicker
:
public class ImagePicker extends LinearLayout {
private Button button;
public ImagePicker(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
View.inflate(context, R.layout.image_picker, this);
button = findViewById(R.id.button);
}
public Button getButton() {
return button;
}
}
Activity
:
public class Activity extends AppCompatActivity {
private static int REQUEST_TAKE_PHOTO = 99;
@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
setContentView(R.layout.activity_main2);
ImagePicker imagePicker = findViewById(R.id.imagePicker);
imagePicker.getButton().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
try{
startActivityForResult(takePhotoIntent, REQUEST_TAKE_PHOTO);
}catch (ActivityNotFoundException e){
e.printStackTrace();
}
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
}
一个更简单的解决方案是直接在 Activity 中获取 Button:
public class Activity extends AppCompatActivity {
private static int REQUEST_TAKE_PHOTO = 99;
@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
setContentView(R.layout.activity_main2);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
try{
startActivityForResult(takePhotoIntent, REQUEST_TAKE_PHOTO);
}catch (ActivityNotFoundException e){
e.printStackTrace();
}
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.