2012-12-02 70 views
0

我正在使用内置的NumberPicker让用户选择一个数字。然后用户将点击“确定”按钮进行确认,最终的动作将打开另一个活动。当用户点击“确定”按钮时,我需要用户选择的号码通过其他活动。我已经完成了导致打开一个新的活动的按钮,我知道NumberPicker有一个getValue(),你可以通过putExtra()传递东西,但我不知道如何将这些与onClick方法结合起来。我如何去做这件事?Android:将NumberPicker中的整数传递给另一个活动

public class Source1 extends Activity implements View.OnClickListener { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_1); 
...(NumberPicker code) 
} 

@Override 
public void onClick(View v) { 
    int x = ((NumberPicker) v).getValue(); 
    Intent intent = new Intent(this, Destination.class); 
    intent.putExtra("VarName", x); 
    startActivity(intent); 
} 
} 

这是我的按钮XML:

<Button 
    android:id="@+id/Id_name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/numberPicker1" 
    android:layout_centerHorizontal="true" 
    android:onClick="methodName" 
    android:text="@string/Ok" /> 

这是我的尝试。这是正确的/需要改变的是什么?我是否需要按钮代码中的onClick,因为我在该类中使用了onClick方法?

回答

5

更改您的代码摆脱NumberPicker上的按钮进行点击来选择值:

@Override 
public void onClick(View v) { 

    NumberPicker numPicker = (NumberPicker)findViewById(R.id.NumberPicker_id); 
    int x = numPicker.getValue(); 
    Intent intent = new Intent(this, Destination.class); 
    intent.putExtra("VarName", x); 
    startActivity(intent); 
} 
+1

良好的渔获物(给予好评)。 – Sam

+0

@imran khan好的,我做了一些改变,包括从xml中删除onClick(只留下类中的onClick方法)。在Destination类中,我做了Intent intent = getIntent()的声明;和int intValue = intent.getIntExtra(“VarName”,???);我的问题是我在问号的地方放什么?编译器不喜欢“getExtra”,它希望我添加“getBundleExtra”,“getStringExtra”等等。但是,如何在不断依赖前一活动的用户时选择一个值? –

+0

@lord_sneed:在intent.getIntExtra(“VarName”,ANY_DEFAULT_INTEGER_VALUE)中放置任何默认的整数值作为第二参数;' –

2

这是对的/需要改变什么?

测试其权利是否是最好的方法:尝试在Destination阅读VarName。但请参阅imran khan的答案。

因为我在类中使用onClick方法,我甚至在按钮代码中的onClick吗?

不,你应该选择其中一个。无论是使用:

  1. 在XML onClick="methodName",与public void methodName(View v) {}Source1

  2. implement OnClickListener,并使用numberPicker.setOnClickListener(this);

相关问题