0

我之前问过这个问题,但我没有解释正在发生的事情,而是问你将如何做到这一点。

我的目标:

我有 2 个屏幕。

屏幕 1:(
文本视图) -->“选择您最喜欢的号码”
(微调器)--> 下拉一个可供选择的数字列表
(btnGo)--> 开始一个新的意图并切换到屏幕 2

屏幕 2:
“您最喜欢的号码是:(无论您在微调器上选择了什么)”

我尝试了不同的方法,但在屏幕更改后我无法从微调器中检索信息。

那么你会怎么做呢?请尽可能详细。

4

5 回答 5

0

你还没有解释你的“屏幕”是什么,所以我假设它们是活动。

当您想将数据从一个活动传递到另一个活动时,而不是尝试反向引用调用第二个活动的活动,您应该将其作为意图的一部分所需的任何数据传递到第二个活动。

例如:

myIntent.putExtra("spinnerValue", spinner.getIndex()); 

在第二个活动中,您可以读取数据:

int spinnerValue = getIntent().getExtras().getInt("spinnerValue");
于 2012-09-17T06:50:35.527 回答
0
    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);
于 2012-09-17T06:52:29.980 回答
0

基本上,当您调用 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);

你明白吗?

于 2012-09-17T06:53:36.210 回答
0

你可以这样使用:

在 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);

就这样吧。

希望它对你有用。

于 2012-09-17T06:53:48.860 回答
0

//在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;

}

于 2012-09-17T07:07:57.983 回答