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:)