如何在android中的活动之间移动?

时间:2017-09-30 18:30:13

标签: java android android-layout android-intent

我在android项目3 Xml布局和3个java类中有三个活动 第一个java类。第二个是.MainActivity和第三个.Levels 我已经创建了一个意图从.Home成功转移到.MainActivity成功但当我想编辑代码以从.Home通过Button1移动到页面.Levels然后移动到页面.MainActivity由Button2代码显示没有错误,但应用程序无法在我的手机上工作它显示不幸,应用程序已经停止我真的不知道什么是错的cuz android显示没有错误在控制台只有一些关于throw-bale

家庭活动:

public  class Home extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
      final   Button btn = (Button) findViewById(R.id.Button1);
        btn.setOnClickListener(this);
    }


    @Override
    public void onClick(View view) {

        Intent i= new Intent(Home.this,MainActivity.class);
        startActivity(i);
    }
}

级别活动:

public class Levels extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.levels);

         final Button b=(Button)findViewById(R.id.Button2);
        b.setOnClickListener((View.OnClickListener) this);
    }

    @Override
    public void onClick(View view) {

        Intent i= new Intent(this,MainActivity.class);
        startActivity(i);
    }
}

1 个答案:

答案 0 :(得分:0)

您必须做的第一件事(如果您还没有)是在Manifest.xml文件中列出您的所有活动,并将您的一项活动作为主要活动。 之后我们可以谈论从一个活动转移到另一个活动。 这样做的方法是使用Intent。我将在这里登录并注册示例。 在主要活动中,我们有两个按钮登录和注册。

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    login();
    register();
}

 public void init(){
    email = (EditText) findViewById(R.id.email);
    password = (EditText) findViewById(R.id.password);
    login = (Button) findViewById(R.id.login);
    register = (Button) findViewById(R.id.register);
}

public void login(){
    init();
    login.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            checkLogin();
        }
    });

}

public void register(){
    register.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            startActivity(new Intent(getApplicationContext(), RegisterActivity.class));
        }
    });
}

public void checkLogin(){
    inEmail = email.getText().toString();
    inPassword = password.getText().toString();
    String message;
    if(inEmail.isEmpty() || inPassword.isEmpty()){
        message = "One of the fields is empty";
        Toast.makeText(getApplicationContext(),message,Toast.LENGTH_SHORT).show();
    }
    else{
        message = "Login successful";
        Toast.makeText(getApplicationContext(),message,Toast.LENGTH_SHORT).show();
        Intent i = new Intent(getApplicationContext(),ProfileActivity.class);
        Bundle b = new Bundle();
        b.putString("email",inEmail);
        b.putString("password",inPassword);
        i.putExtras(b);
        startActivity(i);
    }
}

如果我按下登录按钮并且两个文本字段都已填满,或者如果按下注册按钮,则转到RegisterActivity,我在这里做的是转到ProfileActivity。 在Bundle对象中,我将在另一个视图中传递一些值。我在ProfileActivity上需要电子邮件和密码,我使用Bundle对象来获取它们。在我转到Bundle对象后,我需要致电putExtras()Bundle传递给Intent。 这是通过不同活动进行的非常简单的示例。这可能对您有所帮助。尝试理解我的简单代码并根据您的需要进行重构。