我必须旋转器,当我启动我的应用程序时,PHP 仅返回旋转器的第一选择的值。 第一个代码是一个类的一部分 (IzboraGrada.java)
public void addListenerOnButton() {
spinner1=(Spinner) findViewById(R.id.spinner1);
spinner2=(Spinner) findViewById(R.id.spinner2);
button=(Button) findViewById(R.id.button);
str_grad=spinner1.getSelectedItem().toString();
str_predmet=spinner2.getSelectedItem().toString();
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i=new Intent (v.getContext(), MainActivity.class);
url = "http://192.168.1.102/test/spinner.php";
url=url+"?grad="+str_grad+"&predmet="+str_predmet;
i.putExtra("URL",url);
startActivity(i);
}
});
第二个代码是 MainActivity.class 的一部分,它是有意的。
private void initView() {
// show progress dialog
dialog = ProgressDialog.show(this, "", "Loading...");
String url = "http://192.168.1.102/test/spinner.php";
Bundle extras = getIntent().getExtras();
if (extras != null) {
url = extras.getString("URL");
}
FetchDataTask task = new FetchDataTask(this);
task.execute(url);
}
我认为这是因为 str_grad 和 str_predmet 没有在第二类中定义。但是如果我将 str_grad 和 str_predmet 放在第二类中,它们将无法解析为类型。有什么想法该怎么办吗?
最佳答案
看起来您在一开始就在选择项目之前调用此方法,所以我认为问题在于您正在设置 str_grad
的值和str_predmet
首次设置时,所选项目是默认项目。这些是 getter 函数而不是监听器。
您需要将这些行移至 onClick()
内或使用onItemSelected()
在您的Spinners
上设置这些变量值
public void addListenerOnButton() {
spinner1=(Spinner) findViewById(R.id.spinner1);
spinner2=(Spinner) findViewById(R.id.spinner2);
button=(Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
str_grad=spinner1.getSelectedItem().toString(); // move these lines here
str_predmet=spinner2.getSelectedItem().toString();
Intent i=new Intent (v.getContext(), MainActivity.class);
url = "http://192.168.1.102/test/spinner.php";
url=url+"?grad="+str_grad+"&predmet="+str_predmet;
i.putExtra("URL",url);
startActivity(i);
}
});
如果我正确理解您的问题,那应该可以解决您的问题。
关于java - 从另一个类获取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17868036/