我有三个活动,第一个活动是欢迎应用页面(SavingsGuiderSplashActivity),它将动画显示要求用户名的第二个活动(SavingsGuiderUserActivity)。我使用共享首选项来存储用户名。然后单击提交按钮后,将进入菜单页面(SavingsGuiderMenuActivity)。我已经在第二页中声明了检索首选项方法,所以当用户再次启动应用程序时,如果prefs包含用户名,它将直接转到主菜单活动页面而不是第二个要求用户名的活动。我认为问题更多关注SavingsGuiderSplashActivity以及SavingsGuiderUserActivity。我在菜单页面上显示名称没有问题。例如(“嗨约翰”)。我试图产生这个,但不知怎的,第二次我启动应用程序,它仍然会转到第二页。任何人都可以告诉我我的代码有什么问题吗?
我的动画欢迎页面代码:
public class SavingsGuiderSplashActivity extends SavingsActivity {
EditText nameEdit;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
startAnimating();
}
private void startAnimating() {
// Fade in top title
TextView img1 = (TextView) findViewById(R.id.TextViewTopTitle);
Animation fade1 = AnimationUtils.loadAnimation(this, R.anim.fade_in);
img1.startAnimation(fade1);
// Fade in bottom title after a built-in delay.
TextView img2 = (TextView) findViewById(R.id.TextViewBottomTitle);
Animation fade2 = AnimationUtils.loadAnimation(this, R.anim.fade_in2);
img2.startAnimation(fade2);
// Transition to Main Menu when bottom title finishes animating
fade2.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation animation) {
// The animation has ended, transition to the Main Menu screen
startActivity(new Intent(SavingsGuiderSplashActivity.this, SavingsGuiderUserActivity.class));
SavingsGuiderSplashActivity.this.finish();
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}});
// Load animations for all views within the TableLayout
Animation spinin = AnimationUtils.loadAnimation(this, R.anim.custom_anim);
LayoutAnimationController controller = new LayoutAnimationController(spinin);
TableLayout table = (TableLayout) findViewById(R.id.tableLayout1);
for (int i = 0; i < table.getChildCount(); i++) {
TableRow row = (TableRow) table.getChildAt(i);
row.setLayoutAnimation(controller);
}
}
@Override
protected void onPause() {
super.onPause();
// Stop the animation
TextView img1 = (TextView) findViewById(R.id.TextViewTopTitle);
img1.clearAnimation();
TextView img2 = (TextView) findViewById(R.id.TextViewBottomTitle);
img2.clearAnimation();
TableLayout table = (TableLayout) findViewById(R.id.tableLayout1);
for (int i = 0; i < table.getChildCount(); i++) {
TableRow row = (TableRow) table.getChildAt(i);
row.clearAnimation();
}
}
@Override
protected void onResume() {
super.onResume();
// Start animating at the beginning
startAnimating();
}
}
我的用户活动页面:
public class SavingsGuiderUserActivity extends SavingsActivity {
/** Called when the activity is first created. */
String tag = "SavingsGuiderActivity";
EditText nameEdit;
Toast toast;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
retrievePreferences();
setContentView(R.layout.user);
Button submitBtn = (Button)findViewById(R.id.btn_submit);
nameEdit=(EditText)findViewById(R.id.edit_name);
submitBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String txt = nameEdit.getText().toString();
//validate the editText
if (!txt.equals("")) {
Intent intent = new Intent(SavingsGuiderUserActivity.this, SavingsGuiderMenuActivity.class);
Bundle extras = new Bundle();
extras.putString("name",txt);
intent.putExtras(extras);
saveAsPreferences();
startActivity(intent);
}
else {
Context context = getApplicationContext();
CharSequence text = "Please enter your name!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
});
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.d(tag, "In the onDestroy() event");
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.d(tag, "In the onPause() event");
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Log.d(tag, "In the onRestart() event");
retrievePreferences();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.d(tag, "In the onResume() event");
retrievePreferences();
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.d(tag, "In the onStart() event");
retrievePreferences();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.d(tag, "In the onStop() event");
}
public void saveAsPreferences(){
String nameString = nameEdit.getText().toString();
SharedPreferences prefs = getSharedPreferences("preferences", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("name", nameString);
}
public void retrievePreferences(){
SharedPreferences prefs = getSharedPreferences("preferences",MODE_PRIVATE);
if(prefs.contains("name")){
String nameString = prefs.getString("name", "");
nameEdit.setText(nameString);
Intent intent = new Intent(SavingsGuiderUserActivity.this, SavingsGuiderMenuActivity.class);
Bundle extras = new Bundle();
intent.putExtras(extras);
startActivity(intent);
}
}
}
我的菜单页面:
public class SavingsGuiderMenuActivity extends SavingsActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu);
Bundle bundle = getIntent().getExtras();
String name= bundle.getString("name");
TextView resultView =(TextView)findViewById(R.id.view_Name);
resultView.setText("Welcome " + name);
ListView menuList = (ListView) findViewById(R.id.ListView_Menu);
String[] items = { getResources().getString(R.string.start),
getResources().getString(R.string.about),
getResources().getString(R.string.help) };
ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.menu_item, items);
menuList.setAdapter(adapt);
menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View itemClicked, int position, long id) {
// Note: if the list was built "by hand" the id could be used.
// As-is, though, each item has the same id
TextView textView = (TextView) itemClicked;
String strText = textView.getText().toString();
if (strText.equalsIgnoreCase(getResources().getString(R.string.start))) {
// Launch the Game Activity
startActivity(new Intent(SavingsGuiderMenuActivity.this, SavingsGuiderAppActivity.class));
} else if (strText.equalsIgnoreCase(getResources().getString(R.string.help))) {
// Launch the Help Activity
startActivity(new Intent(SavingsGuiderMenuActivity.this, SavingsGuiderHelpActivity.class));
} else if (strText.equalsIgnoreCase(getResources().getString(R.string.about))) {
// Launch the Settings Activity
startActivity(new Intent(SavingsGuiderMenuActivity.this, SavingsGuiderAboutActivity.class));
}
}
});
}
}
答案 0 :(得分:1)
尝试在第一页本身(即SavingsGuiderSplashActivity)中检索您的首选项,并查看用户名是否存在。使用以下功能
public boolean usernameExists()
{
SharedPreferences prefs = getSharedPreferences("preferences",MODE_PRIVATE);
if(prefs.contains("name"))
{
return true;
}
else
{
return false;
}
}
等等,我只会为您更改您的SavingsGuiderSplashActivity代码
public class SavingsGuiderSplashActivity extends SavingsActivity {
EditText nameEdit;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
startAnimating();
}
private void startAnimating() {
// Fade in top title
TextView img1 = (TextView) findViewById(R.id.TextViewTopTitle);
Animation fade1 = AnimationUtils.loadAnimation(this, R.anim.fade_in);
img1.startAnimation(fade1);
// Fade in bottom title after a built-in delay.
TextView img2 = (TextView) findViewById(R.id.TextViewBottomTitle);
Animation fade2 = AnimationUtils.loadAnimation(this, R.anim.fade_in2);
img2.startAnimation(fade2);
// Transition to Main Menu when bottom title finishes animating
fade2.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation animation) {
// The animation has ended, transition to the Main Menu screen
if(!usernameExists())
{
startActivity(new Intent(SavingsGuiderSplashActivity.this, SavingsGuiderUserActivity.class));
}
else
{
startActivity(new Intent(SavingsGuiderSplashActivity.this, SavingsGuiderMenuActivity.class));
}
SavingsGuiderSplashActivity.this.finish();
}
public boolean usernameExists()
{
SharedPreferences prefs = getSharedPreferences("preferences",MODE_PRIVATE);
if(prefs.contains("name"))
{
return true;
}
else
{
return false;
}
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}});
// Load animations for all views within the TableLayout
Animation spinin = AnimationUtils.loadAnimation(this, R.anim.custom_anim);
LayoutAnimationController controller = new LayoutAnimationController(spinin);
TableLayout table = (TableLayout) findViewById(R.id.tableLayout1);
for (int i = 0; i < table.getChildCount(); i++) {
TableRow row = (TableRow) table.getChildAt(i);
row.setLayoutAnimation(controller);
}
}
@Override
protected void onPause() {
super.onPause();
// Stop the animation
TextView img1 = (TextView) findViewById(R.id.TextViewTopTitle);
img1.clearAnimation();
TextView img2 = (TextView) findViewById(R.id.TextViewBottomTitle);
img2.clearAnimation();
TableLayout table = (TableLayout) findViewById(R.id.tableLayout1);
for (int i = 0; i < table.getChildCount(); i++) {
TableRow row = (TableRow) table.getChildAt(i);
row.clearAnimation();
}
}
@Override
protected void onResume() {
super.onResume();
// Start animating at the beginning
startAnimating();
}
这应该解决它!
答案 1 :(得分:0)
如果您有用户名,请在检索首选项的底部,尝试输入:
this.finish();
答案 2 :(得分:0)
如果我理解正确,第二次你想直接从 SavingsGuiderSplashActivity - >&gt; SavingsGuiderMenuActivity ,跳过 SavingsGuiderUserActivity 。如果确实如此,那么在 SavingsGuiderSplashActivity的 onAnimationEnd方法中,您需要检查是否设置了首选项值,并根据您需要启动适当的活动,
答案 3 :(得分:0)
所以这就是我的老师教我让amy app运行的!
用户活动页面
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user);
Button submitBtn = (Button)findViewById(R.id.btn_submit);
nameEdit=(EditText)findViewById(R.id.edit_name);
submitBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String txt = nameEdit.getText().toString();
//validate the editText
if (!txt.equals("")) {
Intent intent = new Intent(SavingsGuiderUserActivity.this, SavingsGuiderMenuActivity.class);
Bundle extras = new Bundle();
extras.putString("name",txt);
intent.putExtras(extras);
saveAsPreferences();
startActivity(intent);
}
else {
Context context = getApplicationContext();
CharSequence text = "Please enter your name!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
});
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.d(tag, "In the onDestroy() event");
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.d(tag, "In the onPause() event");
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Log.d(tag, "In the onRestart() event");
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.d(tag, "In the onResume() event");
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.d(tag, "In the onStart() event");
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.d(tag, "In the onStop() event");
}
public void saveAsPreferences(){
String nameString = nameEdit.getText().toString();
SharedPreferences prefs = getSharedPreferences("preferences", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.clear();
editor.putString("name", nameString);
editor.commit();
}
}
启动活动:
public void onAnimationEnd(Animation animation) {
// The animation has ended, transition to the Main Menu screen
if(!usernameExists())
{
startActivity(new Intent(SavingsGuiderSplashActivity.this, SavingsGuiderUserActivity.class));
}
else
{
Intent intent = new Intent(SavingsGuiderSplashActivity.this, SavingsGuiderMenuActivity.class);
Bundle extras = new Bundle();
extras.putString("name",strName);
intent.putExtras(extras);
startActivity(intent);
}
SavingsGuiderSplashActivity.this.finish();
}
public boolean usernameExists()
{
SharedPreferences prefs = getSharedPreferences("preferences",MODE_PRIVATE);
if(prefs.contains("name"))
{
strName = prefs.getString("name", null);
return true;
}
else
{
return false;
}
}