微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在@Override 方法之外获取选定的微调项并进入另一个类

如何解决无法在@Override 方法之外获取选定的微调项并进入另一个类

我有 MainActivity 和 SpinnerActivity,我想从 SpinnerActivity 中获取选定的 Spinner 项目值到 MainActivity 中。我尝试将 String 声明为静态,我也尝试使用 getter 但没有成功。

在 Spinner Activity 中,我也有 if 语句,如何将“if 语句”和“@Override 方法”之外的值获取到另一个类中?

MainActivity.class

public class MainActivity extends AppCompatActivity {

    SpinnerActivity spinnerActivity = new SpinnerActivity();

    Spinner spinnerProvince;

    String selectedSpinnerProvince = spinnerActivity.inSpinnerSelectedProvince;
//    String selectedSpinnerProvince = SpinnerActivity.inSpinnerSelectedProvince;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        spinnerProvince = findViewById(R.id.spinnerProvince);

        populateSpinnerProvinces();

        spinnerProvince.setonItemSelectedListener(spinnerActivity);

    }

    public void populateSpinnerProvinces() {
        ArrayAdapter<String> provincesAdapter = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item,getResources().getStringArray(R.array.province));
        provincesAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerProvince.setAdapter(provincesAdapter);
    }
}

SpinnerActivity.class

public class SpinnerActivity implements android.widget.AdapterView.OnItemSelectedListener {

    public String inSpinnerSelectedProvince;


    @Override
    public void onItemSelected(AdapterView<?> parent,View view,int position,long id) {

        if (parent.getId() == R.id.spinnerProvince) {

            inSpinnerSelectedProvince = parent.getItemAtPosition(position).toString();
            Toast.makeText(parent.getContext(),parent.getItemAtPosition(position).toString(),Toast.LENGTH_SHORT).show();

        } else {// code here}
        
    }

    @Override
    public void onnothingSelected(AdapterView<?> parent) {

    }
}

解决方法

我正要建议你两个活动之间使用意向共享数据的时候,发现你的“SpinnerActivity”是不是一个真正的活动,因为它没有扩展的Android Activity类(AppCompactActivity或其他类这样的)。

您SpinnerActivity是一个监听器。你可以使用它时,你的微调视图执行行动,执行动作触发。为此,您需要在 onItemSelected 的“@Override”方法中执行此操作。

如果你不喜欢使用的,因为覆盖了Methode以前梅索德你应该直接在您的MainActivity上的微调视图单击事件做这个落实在行动上,以触发:

     public class MainActivity extends AppCompatActivity {

      SpinnerActivity spinnerActivity = new SpinnerActivity();

      Spinner spinnerProvince;

       String selectedSpinnerProvince = spinnerActivity.inSpinnerSelectedProvince;
       //    String selectedSpinnerProvince = 
       SpinnerActivity.inSpinnerSelectedProvince;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        spinnerProvince = findViewById(R.id.spinnerProvince);

        populateSpinnerProvinces();
         
        //spinnerProvince.setOnItemSelectedListener(spinnerActivity);
     spinnerProvince.setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener() {
         @Override
public void onItemSelected(AdapterView<?> parent,View view,int position,long id) {

    if (parent.getId() == R.id.spinnerProvince) {

        inSpinnerSelectedProvince = parent.getItemAtPosition(position).toString();
        Toast.makeText(parent.getContext(),parent.getItemAtPosition(position).toString(),Toast.LENGTH_SHORT).show();

    } else {// code here}
    
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
    });

    }

    public void populateSpinnerProvinces() {
        ArrayAdapter<String> provincesAdapter = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item,getResources().getStringArray(R.array.province)); 
  
 provincesAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerProvince.setAdapter(provincesAdapter);
      }
   }

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。