java - 如何将数据从一个活动获取到另一个活动并使用它们?
问题描述
我正在使用日历应用程序,但我被卡住了。我有一个活动可以获取一些详细信息,然后我希望其他活动在文本视图中显示详细信息。Ps:我正在考虑一个“if”命令,如果详细信息(日、月、年)与选定的日期或当前日期匹配,如果没有按下任何日期,它应该显示具有相同时间详细信息的事件。请帮忙。谢谢!
活动详情:
package com.exemple.android.calendar;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputFilter;
import android.text.Spanned;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import org.jetbrains.annotations.NotNull;
public class NewEventActivity extends AppCompatActivity {
//step 1.A:create objects
public EditText DayEditText;
public EditText MonthEditText;
public EditText YearEditText;
public EditText StartingHourEditText;
public EditText StartingMinuteEditText;
public EditText EndingHourEditText;
public EditText EndingMinuteEditText;
public EditText Title;
public RadioGroup answer1;
public Button NewEventButton;
int day, month, year, s_hour, s_min, e_hour, e_min;
String title;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_event_page);
//Step 1.B: assign objects
DayEditText = findViewById(R.id.DayEditText);
MonthEditText = findViewById(R.id.MonthEditText);
YearEditText = findViewById(R.id.YearEditText);
StartingHourEditText = findViewById(R.id.StartingHourEditText);
StartingMinuteEditText = findViewById(R.id.StartingMinuteEditText);
EndingHourEditText = findViewById(R.id.EndingHourEditText);
EndingMinuteEditText = findViewById(R.id.EndingMinuteEditText);
Title = findViewById(R.id.TitleEditText);
answer1 = findViewById(R.id.Answer1);
NewEventButton = findViewById(R.id.CreateEventButton);
DayEditText.setFilters(new InputFilter[]{new MinMaxFilter("0", "31")});
MonthEditText.setFilters(new InputFilter[]{new MinMaxFilter("0", "12")});
YearEditText.setFilters(new InputFilter[]{new MinMaxFilter("0", "2030")});
StartingHourEditText.setFilters(new InputFilter[]{new MinMaxFilter("0", "23")});
StartingMinuteEditText.setFilters(new InputFilter[]{new MinMaxFilter("0", "59")});
EndingHourEditText.setFilters(new InputFilter[]{new MinMaxFilter("0", "23")});
EndingMinuteEditText.setFilters(new InputFilter[]{new MinMaxFilter("0", "59")});
//Step 2: get data into variables
//Step 2.B: get data and assign
//PROBLEM: If we just extract, the code won't be run because there's nothing to extract yet. We need a conditional.
//SOLUTION: Create a condition for pressing the button, and then extract the variables when the button is pressed.
TextWatcher dayTextWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
day = Integer.parseInt(DayEditText.getText().toString());
}
};
TextWatcher monthTextWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
month = Integer.parseInt(MonthEditText.getText().toString());
}
};
TextWatcher yearTextWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
year = Integer.parseInt(YearEditText.getText().toString());
}
};
TextWatcher titleTextWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
title = Title.getText().toString();
}
};
TextWatcher s_hourTextWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
s_hour = Integer.parseInt(StartingHourEditText.getText().toString());
}
};
TextWatcher s_minTextWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
s_min = Integer.parseInt(StartingMinuteEditText.getText().toString());
}
};
TextWatcher e_minTextWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
e_min = Integer.parseInt(EndingMinuteEditText.getText().toString());
}
};
TextWatcher e_hourTextWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
e_hour = Integer.parseInt(EndingHourEditText.getText().toString());
}
};
DayEditText.addTextChangedListener(dayTextWatcher);
MonthEditText.addTextChangedListener(monthTextWatcher);
YearEditText.addTextChangedListener(yearTextWatcher);
Title.addTextChangedListener(titleTextWatcher);
StartingMinuteEditText.addTextChangedListener(s_minTextWatcher);
StartingHourEditText.addTextChangedListener(s_hourTextWatcher);
EndingMinuteEditText.addTextChangedListener(e_minTextWatcher);
EndingHourEditText.addTextChangedListener(e_hourTextWatcher);
NewEventButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
answer1.clearCheck();
Intent agendaPageGoing = new Intent(getApplicationContext(), AgendaActivity.class);
startActivity(agendaPageGoing);
}
});
}
}
议程活动:
package com.exemple.android.calendar;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CalendarView;
import android.widget.TextView;
import java.sql.Date;
import java.util.Calendar;
public class AgendaActivity extends AppCompatActivity {
int day2,year2,month2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.agenda_page);
final Button showDetails = findViewById(R.id.SeeEventsButton);
CalendarView calendar = findViewById(R.id.calendarView);
TextView events = findViewById(R.id.detailsShowTextView);
Calendar cal = Calendar.getInstance();
day2 = cal.get(Calendar.DAY_OF_MONTH);
year2=cal.get(Calendar.YEAR);
month2=cal.get(Calendar.MONTH);
calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(@NonNull CalendarView calendarView, int year, int month, int day) {
year2 = year;
month2 = month;
day2=day;
}
});
showDetails.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//This is the button I was talking about
}
});
}
}
解决方案
您可以使用意图在活动之间传递数据
打开详细视图时放置数据:
Intent intent = new Intent(AgendaActivity.this, NewEventActivity.class);
intent.putExtra("tag", "put data here");
startActivity(intent);
在详细视图中检索数据:
Intent intent = getIntent();
String data = intent.getStringExtra("tag");
推荐阅读
- flutter - 如果子 GridView 没有固定高度,则不会调用 NotificationListener 的 onNotification
- puppeteer-sharp - 拦截 iframe 发送的请求
- c++ - 使用结构模板的函数 - function(struct
x,结构 y) - python - 为什么我收到此错误“TypeError:'list' 对象不能解释为整数”
- flutter - 我有一个未来
- 从颤振的sqlite返回数据。我想将此列表转换为 ListView。我怎样才能做到这一点
- postgresql - 获取每个类别中最近的 N 条记录。Postgres
- raspberry-pi - 如何像 raspbian 一样挂载远程服务器?
- json - 离线:失败:/home/denzilgupta/serverless-testing/.webpack/service/services/trader/package.json 中不存在 package.json
- c++ - Mosquitto:Raspberry PI 4 上的异步连接不起作用
- tsql - SQL:WHERE 子句中的 IF/CASE 语句