![](/img/trans.png)
[英]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.