将捆绑包/意图传递给另一个活动?

问题描述

我是编码新手。我试图将电影数组和日期传递给下一个 Main_Activity3,以便它可以打印在页面上。但我不知道如何将所需的数据放入意图中。对于电影,我只需要将选定的电影传递到另一个页面

Main_Activity2

private Spinner moviespinner,timespinner;
private ArrayList<movies> mvlist = new ArrayList<>();

private ImageView calandericon,arrowdownimage,arrowupimage,poster;
private EditText edittextDate;
private TextView ticketnumber,ratingsinfo,durationinfo,maincastinfo;
private Button butbook;
private int mYear,mMonth,mDay;
private int num = 0;
private String chosengenre;

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

    initUI();
    chosengenre = getIntent().getStringExtra("choice1");
    MovieList();

    ArrayAdapter<movies> movieAdapter = new ArrayAdapter<>(this,R.layout.support_simple_spinner_dropdown_item,mvlist);
    moviespinner.setAdapter(movieAdapter);

    moviespinner.setonItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent,View view,int position,long id) {
            movies selected = mvlist.get(moviespinner.getSelectedItemPosition());

            poster.setimageResource(selected.getPoster());
            ratingsinfo.setText("ratings: " + selected.getrating());
            durationinfo.setText(selected.getDuration());
            maincastinfo.setText("Main Casts: " + selected.getMain_cast());

            ArrayAdapter timeadapter = new ArrayAdapter<>(MainActivity2.this,android.R.layout.simple_spinner_dropdown_item,selected.getShow_time());
            timespinner.setAdapter(timeadapter);

        }

        @Override
        public void onnothingSelected(AdapterView<?> parent) {

        }
    });

    butbook.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent booking = new Intent(MainActivity2.this,MainActivity3.class);
            booking.putParcelableArrayListExtra("movie",(ArrayList<? extends Parcelable>) mvlist);
            startActivity(booking);
        }
    });
}


private void initUI() {
    moviespinner= (Spinner) findViewById(R.id.moviespinner);
    calandericon=findViewById(R.id.calandericon);
    timespinner= (Spinner) findViewById(R.id.timespinner);
    arrowdownimage=findViewById(R.id.arrowdownimage);
    arrowupimage=findViewById(R.id.arrowupimage);
    edittextDate=findViewById(R.id.edittextDate);
    ratingsinfo=findViewById(R.id.ratingsinfo);
    durationinfo=findViewById(R.id.durationinfo);
    maincastinfo=findViewById(R.id.maincastinfo);
    ticketnumber=findViewById(R.id.ticketnumber);
    butbook=findViewById(R.id.butbook);

    calandericon.setonClickListener(this);
    arrowdownimage.setonClickListener(this);
    arrowupimage.setonClickListener(this);
    butbook.setonClickListener(this);
}

@Override
public void onClick(View view) {
    if (view == calandericon){
        final Calendar calender = Calendar.getInstance();
        mYear = calender.get(Calendar.YEAR);
        mMonth = calender.get(Calendar.MONTH);
        mDay = calender.get(Calendar.DAY_OF_MONTH);

        DatePickerDialog date = new DatePickerDialog(this,new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker datePicker,int i,int i1,int i2) {

                edittextDate.setText(i2 + "-" + (i1 + 1) + "-" + i);
            }
        },mYear,mDay);
        date.show();
        date.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
    }

    if (view == arrowupimage)
    {
        num += 1;
        ticketnumber.setText(Integer.toString(num));
    }

    if (view == arrowdownimage)
    {
        if (num > 0)
        {
            num -= 1;
        }
        ticketnumber.setText(Integer.toString(num));
    }
}

public void MovieList() {
    if (chosengenre.equals("SUPERHERO")){
        mvlist.add(new movies("Aquaman","7.5","Jason Momoa","180 mins",new String[]{"11:30 am","12:00 pm","1:40 pm","5:30 pm","7:30 pm"},R.drawable.aquaman));
        mvlist.add(new movies("Avengers: Infinity War","9.0","Chris Hemsworth","150 mins",new String[]{"12:00 pm","2:30 pm","3:30 pm","7:45 pm","8:30 pm"},R.drawable.avengeriw));
        mvlist.add(new movies("Dead Pool 2","8.3","Ryan Reynolds","120 mins",new String[]{"11:00 am","1:30 pm","7:00 pm",R.drawable.deadpool2));
        mvlist.add(new movies("Ant Man and the wasp","8.5","Paul Rudd",new String[]{"10:15 am","12:20 pm","7:15 pm","9:30 pm"},R.drawable.antman));
    }
    if (chosengenre.equals("ACTION")){
        mvlist.add(new movies("Mission Impossible: Fallout","7.2","Tom Cruise,Rebecca Ferguson",new String[]{"10:30 am","1:00 pm","3:30 pm"},R.drawable.mifallout));
        mvlist.add(new movies("Rampage","6.5","Dwayne Johnson",new String[]{"9:30 am","12:15 pm","2:00 pm","4:00 pm"},R.drawable.rampage));
        mvlist.add(new movies("Jurassic World: Fallen Kingdom","Chris Pratt,Bryce Dallas",new String[]{"11:40 am","9:00 pm"},R.drawable.jwfallenkingdom));
        mvlist.add(new movies("Sky Scrapper","7.0","Dwayne Johnson,Neve Campbell","11:00 pm","1:15 pm","6:30 pm","10:00 pm"},R.drawable.skyscrapper));
        mvlist.add(new movies("The Meg","8.2","Jason Statham,Ruby Rose",R.drawable.themeg));
    }
    if (chosengenre.equals("ANIMATION")){
        mvlist.add(new movies("Incredibles 2","NULL","90 mins",new String[]{"10:00 am","1:45 pm",R.drawable.incredible2));
        mvlist.add(new movies("Hotel Transylvania 3","4:30pm"},R.drawable.hoteltrans3));
        mvlist.add(new movies("Peter Rabbit","6.4",new String[]{"11:15 am","3:00 pm",R.drawable.peterrabbit));
    }
}

Main_Activity3

private ImageView movieposter;
private TextView bookingtitle,bookingtimedate,bookingnumber;

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

    initUI();

    Intent booking = getIntent();
    final ArrayList<movies> mvlist = booking.getParcelableArrayListExtra("movie");
    
    int poster = mvlist.get
}

private void initUI() {
    movieposter = findViewById(R.id.movieposter);
    bookingtitle = findViewById(R.id.bookingtitle);
    bookingtimedate = findViewById(R.id.bookingtimedate);
    bookingnumber = findViewById(R.id.bookingnumber);
}

movies.java

公共类电影实现 Parcelable {

private String title;

private String rating;

private String main_cast;

private String duration;

private String[] show_time;

private int Poster;


public movies(String title,String rating,String main_cast,String duration,String[] show_time,int poster) {
    this.title = title;
    this.rating = rating;
    this.main_cast = main_cast;
    this.duration = duration;
    this.show_time = show_time;
    Poster = poster;
}

protected movies(Parcel in) {
    title = in.readString();
    rating = in.readString();
    main_cast = in.readString();
    duration = in.readString();
    show_time = in.createStringArray();
    Poster = in.readInt();
}

public static final Creator<movies> CREATOR = new Creator<movies>() {
    @Override
    public movies createFromParcel(Parcel in) {
        return new movies(in);
    }

    @Override
    public movies[] newArray(int size) {
        return new movies[size];
    }
};

public String getTitle() {
    return title;
}

public String getrating() {
    return rating;
}

public String getMain_cast() {
    return main_cast;
}

public String getDuration() {
    return duration;
}

public String[] getShow_time() {
    return show_time;
}

public int getPoster() {
    return Poster;
}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writetoParcel(Parcel dest,int flags) {
    dest.writeString(title);
    dest.writeString(rating);
    dest.writeString(main_cast);
    dest.writeString(duration);
    dest.writeStringArray(show_time);
    dest.writeInt(Poster);
}

@Override
public String toString() {
    return title;
}

}

解决方法

要发送选定的电影和日期,您可以执行以下操作: (假设您不需要发送整个电影列表,只需发送选定的电影)

/get-redirect

在接收 // set selectedDate = date in milliseconds as "long" variable intent.putExtra("movie",selectedMovie); intent.putExtra("date",selectedDate); 中,像这样从 Activity 中取出数据:

Intent

如果您将日期设为 movies = intent.getParcelableExtra("movie"); dateInMillis = intent.getLongExtra("date"); ,您也可以单独添加它们,如下所示:

mYear,mMmonth,mDay

并像这样在接收 intent.putExtra("year",mYear); intent.putExtra("month",mMonth); intent.putExtra("day",mDay); 中提取它们:

Activity

注意:-1 参数是默认值,以防 mYear = intent.getIntExtra("year",-1); mMonth = intent.getIntExtra("month",-1); mDay = intent.getIntExtra("day",-1); 中不存在附加项,而它们应该存在。

相关问答

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