validar studio propiedades imagen from cargar cambiar java android xml android-intent imageview

java - studio - imageview xamarin android



onClickListener en la vista de imagen para comenzar una nueva intención (2)

Está poniendo el extra con la clave imageResourceId pero está tratando de sacarlo con la imagen clave imageFullScreen . Intenta usar la misma llave en ambos lugares.

Así que estoy tratando de usar un onClickListener para pasar una imagen de una actividad a una nueva actividad, pero no puedo encontrar la manera de hacerlo. Cómo funciona es que la aplicación comienza con una vista de lista donde puede seleccionar un elemento y abre una nueva actividad que muestra cierta información y una imagen a continuación. Quiero poder hacer clic en la imagen para abrirla en una nueva actividad.

Heres my routeDetails.java aquí es donde se encuentra la imagen que quiero hacer clic

package com.example.zach.listview; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.TextView; import static com.example.zach.listview.R.id.image; public class RouteDetails extends AppCompatActivity { TouchImageView routeImage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_route_details); //back button for route details view getSupportActionBar().setDisplayHomeAsUpEnabled(true); //TextView for route details final TextView routeDetailsView = (TextView) findViewById(R.id.routeDetailsView); routeDetailsView.setText(getIntent().getExtras().getString("route")); //ImageView for route details routeImage = (TouchImageView) findViewById(R.id.routeImage); routeImage.setImageResource(getIntent().getIntExtra("imageResourceId", 0)); ////////// Trying to pass image to new activity routeImage.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { int imageId = (int) image.getResourceId(i, -1); Intent intent = new Intent(v.getContext(), FullScreenImage.class); intent.putExtra("imageResourceId", imageId); startActivity(intent); } }); //////////// } //back button for route details view @Override public boolean onSupportNavigateUp(){ finish(); return true; } }

y aquí está el activity_route_details.xml que lo acompaña

<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scrollView1" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_route_details" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.zach.listview.RouteDetails"> <TextView android:text="TextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/routeDetailsView" android:textSize="18sp" android:textAlignment="center" /> <com.example.zach.listview.TouchImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/routeImage" android:scaleType="fitCenter" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:adjustViewBounds="false" android:layout_below="@+id/routeDetailsView"/> </RelativeLayout> </ScrollView>

aquí está mi FullScreenImage.java que quiero que la imagen abra en

package com.example.zach.listview; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; /** * Created by Zach on 11/15/2016. */ public class FullScreenImage extends AppCompatActivity { TouchImageView routeImage; @Override protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); setContentView(R.layout.full_screen_image); routeImage = (TouchImageView) findViewById(R.id.fullScreenImageView); routeImage.setImageResource(getIntent().getIntExtra("imageFullScreen", 0)); } }

Y aquí está el full_scren_image.xml para ir con eso

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <com.example.zach.listview.TouchImageView android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@+id/routeImage" android:id="@+id/fullScreenImageView" android:layout_weight="1" /> </LinearLayout>


Usa tu imagen como ByteArray. Esto funcionó para mí sin ningún problema. En su oyente de clic de la actividad del remitente haga lo siguiente,

Intent senderint = new Intent(context, receiveractivity.class); Bitmap bitmap = drawableToBitmap(view.getBackground()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] b = baos.toByteArray(); senderint.putExtra("myimage", b); startActivity(senderint);

Y en su actividad de receptor haga lo siguiente.

private void getImage(){ LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = null; v = inflater.inflate(R.layout.receiverlayout, null); ViewGroup vg = (ViewGroup) findViewById(R.id.yourmainlayout); Bundle bundle = getIntent().getExtras(); byte[] ba = bundle.getByteArray("myimage"); Bitmap bm = BitmapFactory.decodeByteArray(ba, 0, ba.length()); Drawable dr = new BitmapDrawable(getResources, bm); vg.setBackground(dr); vg.addView(v, 0, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); }

llama a getImage () en tu método oncreate de tu actividad de receptor. El contexto es su contexto de aplicación. Buena suerte:)