我对android真的很陌生,所以如果有一些非常愚蠢的错误,我深表歉意。我也搜索了有关该主题的许多答案,但没有找到合适的解决方案。
我想做的是,登录时仅接受一次用户输入,然后从下次启动应用程序起,它应直接移至下一页,而无需再次询问微调器值。
这是到目前为止的代码-
ArrayAdapter<String> br = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, branchEnt);
br.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
branch.setAdapter(br);
branch.setOnItemSelectedListener(this);
ArrayAdapter<String> yr = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, yearEnt);
yr.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
year.setAdapter(yr);
year.setOnItemSelectedListener(this);
proceed.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(DetailsActivity.this,ProfileActivity.class);
intent.putExtra("branch",String.valueOf(branch.getSelectedItem()));
intent.putExtra("year",String.valueOf(year.getSelectedItem()));
startActivity(intent);
}
});
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
当前,此代码传递了微调器的选定值,但是每次我启动该应用程序时,都会再次发生该活动。我不希望那样发生。输入后应保存数据,并且从第二次开始不再询问。
答案 0 :(得分:1)
使用共享首选项保存数据,然后在启动时使用if语句确定用户是否需要填写数据。
答案 1 :(得分:1)
我们在android中有一个名为shared preferences
的概念,您可以在其中将数据保存在应用程序中,该数据将在应用程序的所有活动中使用。要创建共享的首选项文件,请将以下代码复制到onCreate()
方法上方的主类中,如下所示:
public class AboutUsActivity extends AppCompatActivity {
SharedPreferences sharedpreferences;
public static final String mypreference = "mypref";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about_us);
}
}
这将创建一个名为mypref
的共享首选项文件。现在,您可以像下面那样填充键值:
sharedpreferences = this.getSharedPreferences("mypref", 0); // 0 - for private mode
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("branch", String.valueOf(branch.getSelectedItem()));
editor.putString("year", String.valueOf(year.getSelectedItem()));
editor.apply();
这会将branch
和year
变量存储在共享首选项文件“ mypref”中
现在,每次启动活动时,您都需要检查mypref
方法中onCreate()
文件中这些变量的值是否存储如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about_us);
sharedpreferences = this.getSharedPreferences("mypref", 0);
String branch= sharedpreferences.getString("branch", "default value");
String year= sharedpreferences.getString("year", "default value");
}
如果branch
和year
包含任何值,则可以相应地编写逻辑。
您可以了解有关共享首选项here
的更多信息希望这会有所帮助:)
编辑1:
在单击按钮的侦听器上,该按钮将以共享首选项发布数据,该数据可用于下一个活动:
Button storeDataInSP = findViewById(R.id.back);
storeDataInSP.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sharedpreferences = this.getSharedPreferences("mypref", 0);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("branch", String.valueOf(branch.getSelectedItem()));
editor.putString("year", String.valueOf(year.getSelectedItem()));
editor.apply();
}
});
在按钮所在的活动的onCreate()中添加上述方法。另外,请确保您的微调框也位于同一活动中。
编辑2: 您的FirstActivity应该如下所示:
public class FirstActivity extends AppCompatActivity {
SharedPreferences sharedpreferences;
public static final String mypreference = "mypref";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// This will open shared preference file and load variables "year" and "branch"
sharedpreferences = this.getSharedPreferences("mypref", 0);
String branchstring = sharedpreferences.getString("branch", "0");
String yearstring = sharedpreferences.getString("year", "0");
// This will check if the variables hold data. If so, it will send the control to Secondactivity
if ((branchstring == "0") || (yearstring == "0"){
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(aboutusintent);
} else {
// If those variables dont have values, your FirstActivity will load
setContentView(R.layout.activity_about_us);
}
// Here, you will get selected values from spinners and populate shared preference file.
// Remember I didn't included the code to map spinners, which you need to do here. Otherwise "branch" and "year" will throw error.
sharedpreferences = this.getSharedPreferences("mypref", 0);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("branch", String.valueOf(branch.getSelectedItem())); // branch is the spinner
editor.putString("year", String.valueOf(year.getSelectedItem())); // year is the spinner
editor.apply();
}
}
答案 2 :(得分:0)
这里是一种简单的方法,您可以在Spind中将数据保存到SharedPreferences中。 以下代码会将微调器中的值保存到共享的首选项中
SharedPreferences sharedpreferences = getSharedPreferences("PREFERENCES", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("branch", String.valueOf(branch.getSelectedItem()));
editor.putString("year", String.valueOf(year.getSelectedItem()));
editor.commit();
要在任何其他活动上显示来自sharedpreferences的值,只需执行以下操作:
SharedPreferences sharedpreferences = getSharedPreferences("PREFERENCES",MODE_PRIVATE);
String branch = sharedpreferences.getString("branch","");
String year = sharedpreferences.getString("year","");
这将简单地将您的值放在字符串分支和年份中,您可以使用setText在任何地方打印。无需任何复杂的东西。只需分别使用这两组代码来保存和加载首选项,就可以完成。希望这对您有所帮助。祝你好运:)