android - 将图像数据从 Activity 传输到 fragment

标签 android android-layout android-fragments android-activity android-image

我在 Activity 的 NetworkImageView 中有一张图片。如何在 Fragment 的另一个 NetworkImageView 或 ImageView 中传输它。

第一个 ListView

package com.packageNmae;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;

import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.JsonArrayRequest;
import com.enventpc_03.nav11.adater.CustomListAdapter;
import com.enventpc_03.nav11.app.AppController;
import com.enventpc_03.nav11.model.Movie;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class SearchPeople extends BaseActivity {
    // Log tag
    private static final String TAG = SearchPeople.class.getSimpleName();

    // Movies json url
    // Movies json url
    private static String url = "myurl";
    private static String url1 = "my url";
    private static String Title = "title";
    private static String Location = "loc";
    private static String Description = "des";
    private static String bitmap = "thumbnailUrl";
    private ProgressDialog pDialog;
    private List<Movie> movieList = new ArrayList<Movie>();
    private ListView listView;
    private CustomListAdapter adapter;
    public static final String BITMAP_ID = "id";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);

        listView = (ListView) findViewById(R.id.list);
        adapter = new CustomListAdapter(this, movieList);
        listView.setAdapter(adapter);

        pDialog = new ProgressDialog(this);
        // Showing progress dialog before making http request
        pDialog.setMessage("Loading...");
        pDialog.show();

//        // changing action bar color
//        getActionBar().setBackgroundDrawable(
//                new ColorDrawable(Color.parseColor("#1b1b1b")));

        // Creating volley request obj
        JsonArrayRequest movieReq = new JsonArrayRequest(url,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString());
                        hidePDialog();

                        // Parsing json
                        for (int i = 0; i < response.length(); i++) {

                            try {
                                JSONObject obj = response.getJSONObject(i);
                                Movie movie = new Movie();
                                movie.setTitle(obj.getString("fullname"));
                                movie.setThumbnailUrl(obj.getString("image"));
                                movie.setRating(obj.getString("location"));
                                movie.setGenre(obj.getString("Description"));

                                movie.setYear(obj.getInt("id"));

//                              // Genre is json array
//                              JSONArray genreArry = obj.getJSONArray("genre");
//                              ArrayList<String> genre = new ArrayList<String>();
//                              for (int j = 0; j < genreArry.length(); j++) {
//                                  genre.add((String) genreArry.get(j));
//                              }
//                              movie.setGenre(genre);

                                // adding movie to movies array
                                movieList.add(movie);

                            } catch (JSONException e) {
                                e.printStackTrace();
                            }

//                            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
//                                @Override
//                                public void onItemClick(AdapterView<?> parent, View view, int position,
//                                                        long id) {
//                                    Intent intent = new Intent(MainActivity.this, Details.class);
//
//
//                                    startActivity(intent);
//                                }
//                            });
                        }

                        // notifying list adapter about data changes
                        // so that it renders the list view with updated data
                        adapter.notifyDataSetChanged();
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
                hidePDialog();

            }
        });

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(movieReq);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                // your code
                // TODO Auto-generated method stub
                String name = ((TextView) view.findViewById(R.id.title)).getText().toString();
                String location = ((TextView) view.findViewById(R.id.rating)).getText().toString();
                String description = ((TextView) view.findViewById(R.id.genre)).getText().toString();

                bitmap = ((Movie) movieList.get(position)).getThumbnailUrl();
                Intent intent = new Intent(SearchPeople.this, Details.class);
                intent.putExtra(Title, name);
                intent.putExtra(Location, location);
                intent.putExtra(Description, description);
                intent.putExtra("images", bitmap);


                startActivity(intent);

            }
        });
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        hidePDialog();
    }

    private void hidePDialog() {
        if (pDialog != null) {
            pDialog.dismiss();
            pDialog = null;
        }
    }

    public void onBackPressed() {
        Intent myIntent = new Intent(SearchPeople.this, UploadActivity.class);
        myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);// clear back stack
        startActivity(myIntent);
        finish();
        return;
    }

//    @Override
//    public boolean onCreateOptionsMenu(Menu menu) {
//        // Inflate the menu; this adds items to the action bar if it is present.
//        getMenuInflater().inflate(R.menu.main, menu);
//        return true;
//    }


//
//  @Override
//  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//
//      Intent intent = new Intent(this, Details.class);
//      intent.putExtra(BITMAP_ID,position);
//      startActivity(intent);
//
//  }
}

完整 ImageView 类

import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;
import com.enventpc_03.nav11.app.AppController;
import com.enventpc_03.nav11.model.Movie;

import java.util.ArrayList;
import java.util.List;

public class Details extends BaseActivity {
    private static String Title = "title";
    private static String Location = "loc";
    private static String Description = "des";
    ImageButton fb,google,twitter;
    boolean isImageFitToScreen;
    private static String bitmap = "thumbnailUrl";
     private List<Movie> movieList = new ArrayList<Movie>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_details);
        // getActionBar().hide();


        //Passing url
        MyFragment f = new MyFragment();
        Bundle b = new Bundle();
        bitmap = ((Movie) movieList.get(position)).getThumbnailUrl();
        b.putString("images", bitmap);
        f.setArguments(b);


        Intent i = getIntent();
        ImageLoader imageLoader = AppController.getInstance().getImageLoader();
        String name = i.getStringExtra(Title);
        String location1 = i.getStringExtra(Location);
        String description1 = i.getStringExtra(Description);
        String bitmap = i.getStringExtra("images");
        final NetworkImageView thumbNail = (NetworkImageView) findViewById(R.id.thumbnail);
        thumbNail.setImageUrl(bitmap, imageLoader);
        TextView lblname = (TextView) findViewById(R.id.name_label);
        TextView location = (TextView) findViewById(R.id.each_location);
        TextView description = (TextView) findViewById(R.id.each_comment);

        lblname.setText(name);
        location.setText(location1);
        description.setText(description1);

        fb=(ImageButton)findViewById(R.id.fb);
        fb.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                Intent browserIntent =
                        new Intent(Intent.ACTION_VIEW, Uri.parse("Facebook"));
                startActivity(browserIntent);

            }

        });

        thumbNail.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                FragmentManager fragmentManager = getFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                MyFragment yourFragment= new MyFragment();
                fragmentTransaction.add(R.id.myfragment, yourFragment, "FRAGMENT");
                fragmentTransaction.commit();
            }
        });

    }



    public void onClickHandler(View v) {
        switch (v.getId()) {
            case R.id.thumbnail:
                startActivity(new Intent(this, UploadActivity.class));
        }
    }

    public void onBackPressed() {
        Intent myIntent = new Intent(Details.this, SearchPeople.class);
        myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);// clear back stack
        startActivity(myIntent);
        finish();
        return;
    }

fragment

公共(public)类 MyFragment 扩展 fragment {

private static String bitmap = "thumbnailUrl";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View myFragmentView = inflater.inflate(R.layout.fragment_full, container, false);

    Bundle bundle = this.getArguments();
    String page = bundle.getString("images", bitmap);

    ImageLoader imageLoader = AppController.getInstance().getImageLoader();
    final NetworkImageView thumbNail = (NetworkImageView)myFragmentView.findViewById(R.id.thumbnail);
    thumbNail.setImageUrl(page, imageLoader);
 return myFragmentView;
    }

}

**注意:**Listview to fulldetail image getting properply but not getting to my frament from details Activity

最佳答案

通过 fragment 的 setArguments() 方法传递图像 url,并使用 getArguments() 在 fragment 中获取它。

关于android - 将图像数据从 Activity 传输到 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37583344/

相关文章:

android - 应用程序正在运行但 MAP 是空白的我正在使用 google map api 来定位某个位置

java - 具有多种不同 fragment 类型的 Android BaseFragment 类

android - 如何设置从json内部数组解析出来的数据

android - SurfaceFlinger : Failed to find layer FullScreenFragmentActivity in layer parent (no-parent)

android - list 的应用程序标签中缺少名称为 "com.google.android.gms.appstate.APP_ID"的元数据标签

Android match_parent 向后兼容问题不会编译 eclipse

android - SDK 5.0 RecyclerView 无法实例化

android - 在数据绑定(bind)中查看依赖于 CheckBox 的可见性

Android:只有创建 View 层次结构的原始线程在调用 invalidate() 时才能触摸其 View

android - 相机 Intent 安卓