0

我有三个活动,其中第一个活动是欢迎应用程序页面(SavingsGuiderSplashActivity),它将动画到第二个活动,它将询问用户名(SavingsGuiderUserActivity)。我使用共享偏好来存储用户名。然后单击提交按钮后,它将转到菜单页面(SavingsGuiderMenuActivity)。我在第二个页面中声明了检索首选项方法,因此当用户再次启动应用程序时,如果首选项包含用户名,它将直接转到主菜单活动页面,而不是要求输入用户名的第二个活动。我认为问题更多关注 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));
            } 
        }
    });
}

}
4

4 回答 4

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();

    }

这应该解决它!

于 2012-07-25T13:32:32.923 回答
0

如果您有用户名,请在检索首选项的底部尝试输入:

this.finish();
于 2012-07-25T13:23:23.683 回答
0

如果我理解正确,第二次你想直接从SavingsGuiderSplashActivity --> SavingsGuiderMenuActivity移动,跳过SavingsGuiderUserActivity。如果这是真的,那么在您的SavingsGuiderSplashActivity 的onAnimationEnd 方法中,您需要检查是否设置了首选项值,并且基于该值您需要启动适当的活动,

于 2012-07-25T13:24:26.790 回答
0

所以这就是我的老师教我让 amy 应用程序运行的方法!

用户活动页面

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;
   }
   }
于 2012-07-27T03:34:27.743 回答