我之前问过这个问题,但我没有解释正在发生的事情,而是问你将如何做到这一点。
我的目标:
我有 2 个屏幕。
屏幕 1:(
文本视图)
-->“选择您最喜欢的号码”
(微调器)--> 下拉一个可供选择的数字列表
(btnGo)--> 开始一个新的意图并切换到屏幕 2
屏幕 2:
“您最喜欢的号码是:(无论您在微调器上选择了什么)”
我尝试了不同的方法,但在屏幕更改后我无法从微调器中检索信息。
那么你会怎么做呢?请尽可能详细。
我之前问过这个问题,但我没有解释正在发生的事情,而是问你将如何做到这一点。
我的目标:
我有 2 个屏幕。
屏幕 1:(
文本视图)
-->“选择您最喜欢的号码”
(微调器)--> 下拉一个可供选择的数字列表
(btnGo)--> 开始一个新的意图并切换到屏幕 2
屏幕 2:
“您最喜欢的号码是:(无论您在微调器上选择了什么)”
我尝试了不同的方法,但在屏幕更改后我无法从微调器中检索信息。
那么你会怎么做呢?请尽可能详细。
你还没有解释你的“屏幕”是什么,所以我假设它们是活动。
当您想将数据从一个活动传递到另一个活动时,而不是尝试反向引用调用第二个活动的活动,您应该将其作为意图的一部分所需的任何数据传递到第二个活动。
例如:
myIntent.putExtra("spinnerValue", spinner.getIndex());
在第二个活动中,您可以读取数据:
int spinnerValue = getIntent().getExtras().getInt("spinnerValue");
your_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> adapter, View v, int i, long lng) {
selected_number = adapter.getItemAtPosition(i).toString();
}
}
Intent intent = new Intent(screen1.this, screen2.class);
intent.putExtra("selectedNumber", selected_number);
startActivity(intent);
在屏幕 2 中:
String number = this.getIntent.getExtras("selectedNumber");
your_textView.setText(number);
基本上,当您调用 SCREEN2 时,我认为您运行了一个新意图,它将删除您存储的所有数据。
你应该做的是使用共享首选项这里是一个教程
或者您可以制作两个布局,将第一个设置为visible
,另一个设置为,invisible
以便在单击 btnGO 时隐藏包含微调器和按钮的第一个布局并显示包含文本的新布局。
编辑:
首先确保 (textview) (spinner) (btnGo) 有一个单独的布局,例如 LinearLayout 然后您最喜欢的数字的另一个布局是:(无论您在微调器上选择了什么)”只将它们放在一个 xml 文件中,或者如果您<include />
如果您将它们放在单独的 xml 文件中并在执行按钮单击时设置可见性,则希望您可以使用
spinner.setVisibility(View.INVISIBLE);
btnGo.setVisibility(View.INVISIBLE);
textView.setVisibility(View.INVISIBLE);
"Your favorite number is:(whatever you selected on thespinner)".setVisibility(View.VISIBLE);
你明白吗?
你可以这样使用:
在 Screen-1 上的按钮单击:
Intent intent = new Intent(getApplicationContext(),SCREEN2.class);
intent.putExtra("favoriteNumber",GET_SELECTED_SPINNER);
startActivity(intent);
在 Screen-2 onCreate() 中:
String selectedFavorite = getIntent().getStringExtra("favoriteNumber");
YOUR_TEXTVIEW.setText(selectedFavorite);
就这样吧。
希望它对你有用。
//在screen1按钮事件中
屏幕 2 sc2 = 新屏幕 2();
sc2.Set(3);
// **
//屏幕2类
类屏幕2 {
private int i;
public int Get(){
return i;
public void Set( int a )
this.i = a;
}