簡體   English   中英

Android Studio:如何在我的第二個活動中看到intent方法攜帶的信息?

[英]Android Studio: how can I see the information carried through the intent method on my second activity?

大家好,我是 android 開發的新手,我發現 recyclerview 很混亂。 我目前正在嘗試將一項活動的信息傳遞給另一項活動,但在我的第二項活動中,僅顯示卡片視圖。 任何人都可以幫助我嗎? 非常感謝!

我的布局文件


<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView 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:id="@+id/card_view_parent"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp"
    app:cardCornerRadius="5dp"
    app:cardElevation="10dp"
    android:layout_marginTop="10dp"
    android:layout_marginBottom="10dp"
    app:cardBackgroundColor="#808080"
    tools:context=".ChosenExerciseActivity"
    android:elevation="0dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/selected_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:layout_centerHorizontal="true"
            android:layout_marginTop="10dp"
            android:src="@drawable/ic_launcher_background"></ImageView>

        <TextView
            android:id="@+id/selected_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:text="Exercise Name"
            android:textStyle="bold"

            android:layout_marginTop="5dp"
            android:layout_below="@id/selected_image"></TextView>

        <TextView
            android:id="@+id/selected_description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/selected_name"
            android:layout_marginTop="7dp"
            android:text="Exercise description"
            android:textStyle="italic"
            android:layout_marginStart="5dp"></TextView>

    </LinearLayout>

</androidx.cardview.widget.CardView> 

我的第二個活動


public class ChosenExerciseActivity extends AppCompatActivity {
    TextView exercise_name, exercise_description;
    ImageView exercise_image;

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

        exercise_name = findViewById(R.id.selected_name);
        exercise_description = findViewById(R.id.selected_description);
        exercise_image = findViewById(R.id.selected_image);



        Intent intent = getIntent();
        exercise_name.setText(intent.getStringExtra("selected_name"));
        exercise_description.setText(intent.getStringExtra("selected_description"));
        exercise_image.setImageResource(intent.getIntExtra("selected_image", 0));




        //System.out.println(exercise_name.getText().toString());




    }
} 

我的適配器 class


/**
 * Class responsible for
 */
public class ExerciseAdapter extends RecyclerView.Adapter<ExerciseAdapter.ExerciseViewHolder> {

    private ArrayList<Exercise> exercisesArray = new ArrayList<>();
    Context context;


    public ExerciseAdapter(ArrayList<Exercise> exercisesArray, Context context){
        this.exercisesArray = exercisesArray;
        this.context = context;
    } //constructor

    @NonNull
    @Override
    public ExerciseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.homepage_design, parent, false); //inflate the layout xml file and display it on the parent
        return new ExerciseViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ExerciseViewHolder holder, int position) {

        holder.bind(exercisesArray.get(position)); //bind method comes from the ProjectViewHolder inner class
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(v.getContext(), ChosenExerciseActivity.class);
                intent.putExtra( "text_view_exercise_name", exercisesArray.get(position).getExercise_name());
                intent.putExtra( "text_view_exercise_description", exercisesArray.get(position).getExercise_description());
                intent.putExtra( "text_view_exercise_description", exercisesArray.get(position).getExercise_image());
                v.getContext().startActivity(intent); //you cannot start an activity without a context(this) so that you a Context object which will refer to the activity you wish to retrieve the information
            }
        });
    }

    @Override
    public int getItemCount() {

        return exercisesArray.size();
    }

    class ExerciseViewHolder extends RecyclerView.ViewHolder {

        TextView text_view_exercise_name, text_view_exercise_description;
        ImageView image_view_exercise_image;
        CardView card_view_exercises;

        public ExerciseViewHolder(@NonNull View itemView){
            super(itemView);

            //itemView.setOnClickListener(this); //set the screen to capture the users click
            card_view_exercises = itemView.findViewById(R.id.card_view_parent);
            text_view_exercise_name = itemView.findViewById(R.id.text_view_exercise_name);
            text_view_exercise_description = itemView.findViewById(R.id.text_view_exercise_description);
            image_view_exercise_image = itemView.findViewById(R.id.image_view_exercise_image);

        }

        public void bind(Exercise exercise) {

            text_view_exercise_name.setText(exercise.getExercise_name());
            text_view_exercise_description.setText(exercise.getExercise_description());
            image_view_exercise_image.setImageResource(exercise.getExercise_image());


        }


//        @Override
//        public void onClick(View v) {
//            int position = getAdapterPosition();
//            Exercise chosenExercise = exercisesArray.get(position);
//
//        }
    }
} 

在此處輸入圖像描述

1 創建一個接口來處理適配器中的單擊偵聽器,並在您的活動中注冊這些偵聽器。

2 將意圖鍵修復為具有重復鍵

Intent intent = new Intent(v.getContext(), ChosenExerciseActivity.class);
intent.putExtra( "selected_name", exercisesArray.get(position).getExercise_name());
intent.putExtra( "selected_description", exercisesArray.get(position).getExercise_description());
intent.putExtra( "selected_image", exercisesArray.get(position).getExercise_image());
v.getContext().startActivity(intent);

如果您在某些地方聲明意圖鍵常量會更好

public static int INTENT_EXERCISE_NAME = "INTENT_EXERCISE_NAME"

用法:

intent.putExtra(INTENT_EXERCISE_NAME, exercisesArray.get(position).getExercise_name());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM