我有一个简单的程序,我将旋转器设置到一个位置。然后我调用第二个模块,当我返回时,我重置了微调器。微调器显示不显示微调器值。当您点击微调器时,它指向正确的值,但它显示的值不正确。事实上,它实际上已经下台了。
我写了以下简单程序来演示。仅当表单在Linearlayout或TableLayout中具有至少1个其他元素的微调器时才会发生这种情况。
main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent" android:layout_height="200dp"
android:text="Main Form" />
<LinearLayout android:id="@+id/widget43"
android:layout_width="320dp" android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/btn" android:text="Button" android:textSize="16sp"
android:layout_width="160dp" android:layout_height="40dp" />
<Spinner
android:id="@+id/btnFour" android:textSize="16sp"
android:layout_width="160dp" android:layout_height="40dp" />
</LinearLayout>
</LinearLayout>
next.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView android:id="@+id/id1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Next"
/>
</LinearLayout>
main.java
package tt.zzz;
import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
public class main extends Activity {
@Override
protected void onCreate(Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.main);
fillSpinner();
Button btnGo = (Button) findViewById(R.id.btn);
btnGo.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) { Go(); } });
}
void Go() {
Intent i = new Intent(this, next.class );
startActivityForResult( i, 0 );
}
public void fillSpinner(){
Spinner spin_test = (Spinner) findViewById( R.id.btnFour );
ArrayAdapter<CharSequence> myAdapter =
new ArrayAdapter<CharSequence>(
this,
android.R.layout.simple_spinner_item
);
myAdapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
myAdapter.add("Option 1" );
myAdapter.add("Option 2" );
myAdapter.add("Option 3" );
spin_test.setAdapter(myAdapter);
spin_test.setSelection(1);
spin_test.setOnItemSelectedListener(
new Spinner.OnItemSelectedListener(){
public void onItemSelected(AdapterView<?>
arg0,View arg1,int arg2,long arg3){
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
fillSpinner();
}
}
next.java
package tt.zzz;
import android.app.Activity;
import android.os.Bundle;
public class next extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.next);
}
}
答案 0 :(得分:3)
在setSelection之后,添加以下行:
myAdapter.notifyDataSetChanged();
答案 1 :(得分:2)
我会像barmaley建议的那样做,除了添加以下内容:
@Override
public void onResume()
{
super.onResume();
fillSpinner();
}
之所以需要,是因为你发起了另一项活动,所以暂停了这项活动。
答案 2 :(得分:0)
尝试致电
@Override
public void onStart()
{
super.onStart();
this.fillSpinner();
}
因为onCreate只调用一次,所以每次你应该在其他地方刷新它时更新Spinner。 onStart() - 适合的地方