我有一个学校项目,我试图让手电筒应用程序.对于开/关ImageButton,我想要有4个自定义图像.
如果手电筒关闭:-turn_on.png(默认)-turn_on_pressing.png(state pressed = true)
如果手电筒开启:-turn_off.png(默认)-turn_off_pressing.png(状态按=真)
我希望更改ImageButton src目标以在"on_selector.xml"和"off_selector.xml"之间进行更改.最初我能够setImageResource()更改默认按钮图像.现在,我正在尝试添加自己的新闻图像,我正处于一个非常困难的时期.
Application.java:
import android.app.Activity;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.os.Bundle;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.view.View;
import android.widget.ImageButton;
import com.jrr.flashlight.R;
public class Application extends Activity {
ImageButton flashControl;
Camera camera;
Parameters params;
private boolean hasFlash;
private boolean isFlashOn = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.application_layout);
flashControl = (ImageButton) findViewById(R.id.flashButtonOn);
flashControl.setOnClickListener(flashControlListener());
hasFlash = getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH); //sets value for boolean hasFlash
}
private View.OnClickListener flashControlListener() {
return new View.OnClickListener(){
@Override
public …Run Code Online (Sandbox Code Playgroud) 我的onActivityResult从相机活动回来时发生致命错误.让我感到头疼的是,错误只发生在少数手机上(基于受影响的用户数量),而大多数人似乎没有任何错误.我可以在我的Nexus 6(运行Lollipop 5.1.1)上复制错误,而我的Note 5(也是5.1.1)完全没有问题.
问题是当我尝试从data.getData()分配imageUri时.在Note 5上调试,data.mData等于"content:// media/external/images/media/2215",而在Nexus 6上,data.mData为null.
我知道这是一个常见的问题,但到目前为止我还没有找到任何帮助我的东西.任何人都可以指出我的解决方案并提供答案吗?
方法启动结果的相机活动
@OnClick(R.id.change_image_camera) public void takePicture(){
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);}
Run Code Online (Sandbox Code Playgroud)
onActvityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
Uri imageUri = data.getData(); //The trouble is here
String realPath = Image.getPath(this, imageUri); //getPath crashes because imageUri is null
Image.compressImage(realPath);
File file = new File(realPath);
Bundle extra = new Bundle();
extra.putString("URL", realPath);
returnIntent.putExtras(extra);
setResult(RESULT_OK, returnIntent);
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
我非常感谢你对这个有任何帮助!
我有两个支持片段坐在里面AppCompatActivity.根据设计,它们每个都有独特的工具栏和选项菜单.在AppCompatActivity没有工具栏,因为这些都包含在每个片段它的布局.
在每个片段中,我setHasOptionsMenu(true);在onCreate()中.
在onCreateView()中,我调用的((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);是工具栏是绑定到xml工具栏元素的对象.
在onCreateOptionsMenu(),我首先调用super,然后调用menu.clear(),最后使用inflater.inflate(R.menu.searchbar_menu,menu)来扩展菜单;
失败的地方在于调用((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);这两个片段.在这样做时,选项将仅出现在第二个片段上而不出现在第一个片段上.如果我只在一个片段中调用它,则选项只在那个片段中按预期显示.当然,如果我不打电话,它们根本就不会出现.
这是我的代码.两个片段基本相同,但菜单膨胀除外:
public class FeedFragment extends Fragment implements FeedView{
@BindView(R.id.toolbar)
Toolbar toolbar;
FeedPresenter presenter;
static final String TAG = "FEED_FRAGMENT";
/*
* Some boilerplate fragment setup code
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_feed, container, false);
ButterKnife.bind(this, view);
((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
setupToolar();
return view;
}
@Override
public void onCreateOptionsMenu(Menu …Run Code Online (Sandbox Code Playgroud)