从活动中选择图像并在片段android中显示

时间:2016-11-24 14:27:47

标签: java android android-studio android-fragments

我的问题是我想改变我的显示图像。我有一个设置片段,我可以更新我的信息。当我点击我的图像显示另一个活动,我已经设置了一些图像。从这个活动我想选择一个图像,我想在我的片段中更新我的显示图像。所以基本上我正在更新我的个人资料图片并显示从片段到活动。我已经添加了图像,请你看看。非常感谢,谢谢 enter image description here enter image description here

这是我下面关于图像选择的代码。我可以找到解决方案从库中选择图像,但在我的情况下是不同的,很难解决我的问题作为一个新的Android。

AdapterView.OnItemClickListener myOnItemClickListener = new AdapterView.OnItemClickListener(){

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        int prompt = (int)parent.getItemAtPosition(position);
        Toast.makeText(getApplicationContext(), prompt, Toast.LENGTH_LONG).show();
        finish();



    }};

1 个答案:

答案 0 :(得分:0)

您可以使用startActivityForResult启动您选择图像的Activity,然后在完成后您可以传递所选图像。

在片段中,您需要覆盖OnActivityResult方法并使用它来更改个人资料图片。

修改1

片段中的代码:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    /** your code **/


    profilePicture.setOnClickListener(new OnClickListener() {
        void onClick(View v) {
            Intent i = new Intent(this, ActivityToPickImage.class);
            startActivityForResult(i, 1); // you should define a constant instead of 1
        }
    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {
        if(resultCode == Activity.RESULT_OK) {
            int result = data.getIntExtra("result", 0);
            //result is the code of the picked image
            //code to change profile picture goes here
        }
    }

}

完成活动的代码:

AdapterView.OnItemClickListener myOnItemClickListener = new AdapterView.OnItemClickListener(){

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        int prompt = (int)parent.getItemAtPosition(position);
        Toast.makeText(getApplicationContext(), prompt, Toast.LENGTH_LONG).show();
        Intent returnIntent = new Intent();
        returnIntent.putExtra("result", prompt);
        setResult(Activity.RESULT_OK, returnIntent);
        finish();

}};

Example on starting an activity for result

当您使用startActivityForResult时,您可以在完成时将意图传递给之前的Activity / Fragment。当发生这种情况时,会调用onActivityResult方法,然后您可以设置正确的个人资料图片。