我在这里看了很多关于如何将一个微调器的答案发送到另一个Activity的答案,但是没有一个能为我工作。
在我的第一个活动中,我想看看微调器所处的位置,以便我可以相应地改变我的第二个活动中会出现的问题。这是我的setupSpinner()方法的代码
private void setupSpinner() {
// Create adapter for spinner. The list options are from the String array it will use
// the spinner will use the default layout
ArrayAdapter grammarSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.array_grammar_options,
android.R.layout.simple_spinner_dropdown_item);
// Specify dropdown layout style - simple list view with 1 item per line
grammarSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
//Apply the adapter to the spinner
grammarChoiceSpinner.setAdapter(grammarSpinnerAdapter);
grammarChoiceSpinner.setSelection(0,false);
// Create the intent to send the position to journal activity
grammarChoiceSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(getApplicationContext(), JournalActivity.class);
intent.putExtra("selected", position);
Log.d("in spinner selected", "position of spinner:" + position );
startActivity(intent);
}
// Because AdapterView is an abstract class, onNothingSelected must be defined
@Override
public void onNothingSelected(AdapterView<?> parent) {
mGrammar = 0;
}
});
}
我把日志消息放在那里看看出了什么问题,但是日志消息从未出现过。
这是我的onCreate()方法。我希望保存微调器选择,以便我可以选择在期刊中提出哪些问题。我也想选择“去”选择“日记”或“运动”,然后从那里去正确的活动。我还没有创建一个练习活动,现在只关注日记。但是,只要我选择一个微调器选项,我就会自动发送到期刊。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_opening);
//find the spinner to read user input
grammarChoiceSpinner = (Spinner) findViewById(R.id.spinner);
setupSpinner();
//Set up the intent and OnClickLIstener for the button to go to journal or exercises
final Button chooseGrammarButton = (Button) findViewById(R.id.goButton);
final Button journalButton = (Button) findViewById(R.id.journal);
final Button exercisesButton = (Button) findViewById(R.id.exercises);
// make the Go button disappear and the exercises or grammar button appear
chooseGrammarButton.setVisibility(View.VISIBLE);
journalButton.setVisibility(View.GONE);
exercisesButton.setVisibility(View.GONE);
chooseGrammarButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
chooseGrammarButton.setVisibility(View.INVISIBLE);
journalButton.setVisibility(View.VISIBLE);
exercisesButton.setVisibility(View.VISIBLE);
}
});
//Set button to go to the journal page
Button goToJournal = (Button) findViewById(R.id.journal);
goToJournal.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), JournalActivity.class);
startActivityForResult(myIntent, 0);
}
});
}
在我的第二个活动中,我想根据选择的微调器调用不同的方法。现在,我的代码只包含微调器位置1的选项,因为我想在添加所有其他逻辑之前获得正确的逻辑。这是第二项活动。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_journal);
// nextPresentQuestionButton();
//TODO: fix this so the spinner answer is recorded and the logic follows
Intent intent = getIntent();
int selected = intent.getIntExtra("selected", 0);
Bundle extras = intent.getBundleExtra("selected");
if (extras != null) {
selected = extras.getInt("selected");
}
if (selected == 1) {
nextPresentQuestionButton();
}
}
非常感谢您的帮助。我花了好几个小时试图解决这个问题,但我无法理解错误。
答案 0 :(得分:1)
尝试以下操作:添加startActivity()
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MainActivity.this, JournalActivity.class);
intent.putExtra("selected", position);
Log.d("in spinner selected", "position of spinner:" + position );
startActivity(intent)
}
使用以下方法获取新活动中的选定值:
Intent intent = getIntent();
int selected = intent.getIntExtra("selected", 0);
答案 1 :(得分:0)
我将代码切换到SharedPreferences,即保存它。我仍在努力将其加载到其他活动中,但这个选项工作得更好。这是我现在的代码。
private void setupSpinner() {
// Create adapter for spinner. The list options are from the String array it will use
// the spinner will use the default layout
final ArrayAdapter grammarSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.array_grammar_options,
android.R.layout.simple_spinner_dropdown_item);
// Specify dropdown layout style - simple list view with 1 item per line
grammarSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
//Apply the adapter to the spinner
grammarChoiceSpinner.setAdapter(grammarSpinnerAdapter);
//Create shared preferences to store the spinner selection
SharedPreferences preferences = getApplicationContext().getSharedPreferences
("Selection", MODE_PRIVATE);
editor = preferences.edit();
// Create the intent to save the position
grammarChoiceSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//receive the string of the option and store it
int grammarOptionPosition = grammarChoiceSpinner.getSelectedItemPosition();
//put the string in the editor
editor.putInt("grammarOption", grammarOptionPosition);
editor.commit();
//make a toast so the user knows if it's not "select"
if (grammarOptionPosition != 0) {
Toast.makeText(getApplicationContext(), "Choice saved.",
Toast.LENGTH_SHORT).show();
}
}
// Because AdapterView is an abstract class, onNothingSelected must be defined
@Override
public void onNothingSelected(AdapterView<?> parent) {
mGrammar = 0;
}
});
}