Android:如何将默认选定的东西传递给新的Activity

问题描述

在我的活动中,我有一个EditText,ImageView和Button。加载我的活动后,我将一个ImageView放在GridView中。

Gridview的第一个图像已被选择为认图像,我想输入EditText名称并将EditText值和认的所选图像传递给用户(如果用户不喜欢认图像,也可以选择自己的图像)到New Activity

我的问题是用户输入edittext值,然后按按钮,它仅传递EditText值,而不传递认的Selected Image,如果用户在gridview中选择其他图像,则如果他选择,则同时传递ImageView和EditText值手动选择认的图像,然后它可以正常工作。

如何传递标记的图像,而无需再次选择如何传递给另一个活动 [![在此处输入图片描述] [1]] [1]

我的代码

int[] images={R.drawable.menu,R.drawable.musicBox,R.drawable.shoppingbag,R.drawable.shoppingcart,R.drawable.wallet,R.drawable.weddingdress};
    int imageRes;

    public NewListCreate() {
    }
         public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
        
                 View view = inflater.inflate(R.layout.new_list_create,container,false);
        
                ImageButton done = view.findViewById(R.id.done);
                final EditText listname = (EditText) view.findViewById(R.id.listname);
                final GridView gridView = (GridView) view.findViewById(R.id.gridview);
        
                final CustomAdpter customAdpter = new CustomAdpter(images,getContext());
                gridView.setAdapter(customAdpter);
                gridView.setonItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> adapterView,View view,int i,long l) {
                        customAdpter.selectedImage = i;
                        customAdpter.notifyDataSetChanged();
                        imageRes = images[i];
       
                    }
                });
     done.setonClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
    
                    String itemname = listname.getText().toString();
                    if (!TextUtils.isEmpty(listname.getText().toString())) {
    
                        startActivity(new Intent(getContext(),CheckslateHome.class).putExtra("data",itemname).putExtra("image",imageRes));
                        dismiss();
                    } else {
                        Toast.makeText(getContext(),"List Name not Empty ",Toast.LENGTH_SHORT).show();
                    }
    
                }
    
           });
    
            
            return view;

CustomAdapter

 private int[] icons;
        private Context context;
        private LayoutInflater layoutInflater;
        public int selectedImage = 0;

        public CustomAdpter(int[] icons,Context context) {
            this.icons = icons;
            this.context = context;
            this.layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        @Override
    public int getCount() {
        return icons.length;
    }

    @Override
    public Object getItem(int i) {
        return null;
    }

    @Override
    public long getItemId(int i) {
        return 0;
    }

     public int selectedImage = 0;
        @Override
            public View getView(int i,ViewGroup viewGroup) {
        
                    if (view == null)
                    {
                       view =  layoutInflater .inflate(R.layout.image_list,viewGroup,false);
        
                    }
        
                    ImageView imageicons = view.findViewById(R.id.image);
                if (i < icons.length) {
        
                    imageicons.setimageResource(icons[i]);
        
                    if (i != selectedImage) {
                       imageicons.setimageAlpha(50);
                    }
                    imageicons.setScaleType(ImageView.ScaleType.CENTER_CROP);
                   // imageicons.setLayoutParams(new GridView.LayoutParams(150,150));
                    if (i ==  selectedImage) {
        
                        view.setBackgroundColor(Color.WHITE);
                    } else {
                        view.setBackgroundColor(Color.TRANSPARENT);
                    }
                };
        
        
                return view;

解决方法

尝试此代码:

activity_frist.xml

<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".FirstActivity">

    <ImageView
        android:id="@+id/img_one"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_centerInParent="true"
        android:background="?selectableItemBackground"
        android:scaleType="fitXY"
        android:src="@drawable/img_natural" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/img_one"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:gravity="center_horizontal"
        android:text="Go to second Activity"
        android:textSize="20dp" />
</RelativeLayout>

FirstActivity.java

public class FirstActivity extends AppCompatActivity {
    ImageView img_one;


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

        img_one = (ImageView) findViewById(R.id.img_one);

        img_one.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                BitmapDrawable drawable = (BitmapDrawable) img_one.getDrawable();
                Bitmap bitmap = drawable.getBitmap();
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                intent.putExtra("BitmapImage",bitmap);
                startActivity(intent);
            }
        });

    }

}

activity_second.xml

<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".FirstActivity">


    <ImageView
        android:id="@+id/img_two"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_centerInParent="true"
        android:background="?selectableItemBackground"
        android:scaleType="fitXY" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/img_two"
        android:layout_centerHorizontal="true"
        android:gravity="center_horizontal"
        android:layout_marginTop="20dp"
        android:text="Second Activity"
        android:textSize="20dp" />
</RelativeLayout>

SecondActivity.java

public class SecondActivity extends AppCompatActivity {

    ImageView img_two;


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

        img_two = (ImageView) findViewById(R.id.img_two);

        Intent intent = getIntent();
        Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
        img_two.setImageBitmap(bitmap);


    }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...