【发布时间】:2014-11-17 17:06:02
【问题描述】:
我正在尝试实现 Commonsware CWAC-Camera,但在将其合并到现有片段中时遇到了问题。
我遇到了无法使用 .add 或 .replace 的问题,它希望我将 CameraFragment 更改为 Fragment。
错误:
FragmentTransaction类型中的add(int, Fragment, String)方法不适用于参数(int, CameraFragment, String)
<uses-sdk
android:minSdkVersion="13"
android:targetSdkVersion="21" />
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageButton;
import com.commonsware.cwac.camera.CameraFragment;
public void takePicture() {
CameraFragment f = new CameraFragment();
getFragmentManager().beginTransaction()
.add(R.id.contentFragment, f, TAG_CAMERA_FRAGMENT)
.commit();
}
以前有人经历过吗?这是整个片段。
public class FeedActivity extends Fragment implements OnClickListener {
ImageButton btnCamera, btnGallery;
private final String TAG_CAMERA_FRAGMENT = "camera_fragment";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.activity_feed, container, false);
btnCamera = (ImageButton) view.findViewById(R.id.btn_Camera);
btnCamera.setOnClickListener(this);
btnGallery = (ImageButton) view.findViewById(R.id.btn_Gallery);
btnGallery.setOnClickListener(this);
return view;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn_Camera:
Log.e("CAMERA", "CAMERA BUTTON PRESSED");
//takePicture();
break;
case R.id.btn_Gallery:
Log.e("Gallery", "GALLERY BUTTON PRESSED");
break;
}
}
public void takePicture() {
CameraFragment f = new CameraFragment();
getFragmentManager().beginTransaction()
.add(R.id.contentFragment, f, TAG_CAMERA_FRAGMENT)
.commit();
}
}
【问题讨论】:
-
“我不能使用 .add 或 .replace,它要我将 CameraFragment 更改为 Fragment”——我不知道你的意思。请提供确切的消息并指出是什么给了你消息(IDE?LogCat?别的东西?)如果我不得不猜测,你有错误的导入,并试图将片段反向端口与本机 API 级别 11+ 片段混合,但这只是猜测。
-
FragmentTransaction类型中的add(int, Fragment, String)方法不适用于参数(int, CameraFragment, String)
-
我刚刚包含了错误。快速修复阅读“将 f 更改为片段”。我很抱歉。
-
请编辑您的问题以粘贴到此 Java 源文件的
import语句的完整列表中。我的猜测是正确的,您正在将一些片段反向移植类与 API 级别 11+ 片段类混合,但没有导入,我无法准确告诉您要更改什么。
标签: android android-fragments android-camera commonsware-cwac