小编Joh*_*ggs的帖子

当满足条件时,如何以编程方式更改ImageButton src目标?

我有一个学校项目,我试图让手电筒应用程序.对于开/关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)

android imagebutton

14
推荐指数
3
解决办法
2万
查看次数

对于某些手机,Android data.getData()从CameraActivity返回null

我的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)

我非常感谢你对这个有任何帮助!

null android uri

5
推荐指数
1
解决办法
4317
查看次数

如何在多个片段中设置SupportSupportBar()?

我有两个支持片段坐在里面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)

android android-fragments appcompatactivity

5
推荐指数
1
解决办法
820
查看次数