在活动和非活动之间传递价值

时间:2016-01-05 13:52:29

标签: android

我的应用程序从非活动类中读取数据库,并使用数据库中的数据填充微调器。然后用户从微调器中选择一个值,并用按钮确认它。现在我需要这个值,回到非活动类中进行进一步编码。

我尝试使用return但是确认按钮的代码为public void onClick(View v)return无法正常工作。 我应该在哪里放置return,当我按下按钮或者有任何其他方法可以在我的非活动类中获得选定值时。

代码,如果我不清楚我想做什么。

public class MainActivity extends Activity implements OnItemSelectedListener {
/*private List<String> Banka;
private Cursor cBanka;*/
private MyDatabase db;
Spinner spinner;
Button button;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    spinner = (Spinner) findViewById(R.id.spinner);
    button = (Button) findViewById(R.id.btnPotrdi);
    spinner.setOnItemSelectedListener(this);
    loadSpinnerData();
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String bank=spinner.getSelectedItem().toString();
            Intent next= new Intent(MainActivity.this, ChooseLocation.class);
            startActivity(next);

        }
    });
    }



private void loadSpinnerData() {
db = new MyDatabase(this);

List<String> banks = db.getBanka();
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, banks);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//Log.d("wtf", "listview: " + spinner);
spinner.setAdapter(dataAdapter);
}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
                           long id) {
    // On selecting a spinner item
    String label = parent.getItemAtPosition(position).toString();

    // Showing selected spinner item
    Toast.makeText(parent.getContext(), "Izbrali ste: " + label,
            Toast.LENGTH_LONG).show();

}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

}
@Override
protected void onDestroy(){
    super.onDestroy();
    //cBanka.close();
    db.close();
}

}

2 个答案:

答案 0 :(得分:0)

当您使用db.getBanka()时,您肯定可以使用db.setWhateverIWant(passedData),并且在您的non-activity课程中,您有一套方法:

public void setWhateverIWant(Obj passedData){
    this.myData = passedData;
}

答案 1 :(得分:0)

您无需退货。只需向MyDatabase类添加方法,然后从MainActivity调用该方法。

MainActivity:

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String bank=spinner.getSelectedItem().toString();
        db = new MyDatabase(MainActivity.this); // if needed
        db.setBank(bank);   // or any other name you want
    }
});

MyDatabase

public class MyDatabase{
    public String selectedBank = "";

    public void setBank(String bank) {   // or any other name you want
        selectedBank = bank;
        // use your data for whatever you want
    }
}