我对编码是完全陌生的,所以请尽可能清楚,我将尝试包括所需的所有内容,但是如果您需要更多代码,请询问!
我正试图让FAB在点击时打开相机,并将拍摄的照片保存到手机上的相机胶卷中。我以为这很简单,但是我很挣扎。我已经设法将科学怪人的代码放在一起,最终至少避免了任何错误,但是当您轻按FAB时没有任何反应。我也有两个FAB出现,一个在另一个的下面,部分被隐藏,我不确定为什么。我确实在选项卡式活动中有FAB,所以也许是搞砸了吗?
该标签的Java:
package org.gpnc.gpncscavengerhunt;
import android.content.Intent;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* A simple {@link Fragment} subclass.
*/
public class hunt1tab1 extends Fragment {
public hunt1tab1() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_hunt1tab1, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
view.findViewById(R.id.btnCamera);
FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.btnCamera);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(MediaStore.ACTION_IMAGE_CAPTURE));
;
}
});
}
}
以下是同一标签的相关xml(还有一些文字和图片):
<android.support.design.widget.FloatingActionButton
android:id="@+id/btnCamera"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center"
android:layout_margin="@dimen/fab_margin"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.956"
app:srcCompat="@android:drawable/ic_menu_camera" />
Here's a screenshot if that helps explain what I'm seeing as far as two FABs.
非常感谢!我已经在这里搜索过以尝试找到答案(这是我最初几次中断应用程序后又重新运行该应用程序的方式),但找不到我想要的任何东西(至少我能理解) )。
编辑:清单中也有这两个权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA"/>
答案 0 :(得分:1)
在您的onClick方法中使用它:
pip3 install --upgrade pip
并在您的清单中添加此权限:
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivity(intent);
答案 1 :(得分:0)
对于多个FAB问题,我猜您实际上在布局中有两个。这里至少涉及两个布局:片段和承载该片段的活动。如果他们每个人都有一个FAB,那么当该活动加载该片段时,它们都会显示出来。也许您已将点击侦听器设置为FAB的是后面的那个,因此,如果不单击前面的那一个,您将无法单击它?
希望摆脱第二个FAB可以解决您的点击侦听器问题。如果没有,请告诉我,我们会考虑其他潜在原因。除此之外,还有其他一些注意事项:
确保在manifest
文件的顶级AndroidManifest.xml
元素下具有以下内容(请参见docs)。它告诉Android,您的应用将使用摄像头,并且需要在设备上提供摄像头功能才能使您的应用正常运行:
<uses-feature android:name="android.hardware.camera" android:required="true" />
您将要呼叫startActivityForResult(...)
,而不是startActivity(...)
。这样可以确保您要调用的片段/活动将使用其onActivityResult(...)
方法进行调用,并带有有关所捕获相机的图片的信息。