【问题标题】:how to move between activities in android?如何在android中的活动之间移动?
【发布时间】:2017-09-30 18:30:12
【问题描述】:

我在 android 项目中有 3 个活动 3 个 Xml 布局和 3 个 java 类 第一个 java class.Home,第二个是 .MainActivity,第三个是 .Levels 我已经创建了一个意图从 .Home 成功移动到 .MainActivity 但是当我想编辑代码以通过 Button1 从 .Home 移动到页面 .Levels 然后通过 Button2 移动到页面 .MainActivity 代码显示没有错误,但应用程序无法在我的手机上运行,​​不幸的是,应用程序已停止,我真的不知道出了什么问题,因为 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);
    }
}

【问题讨论】:

  • AndroidManifest.xml 中列出了所有三个活动吗?
  • 请发布您的 AndroidManifest.xml 文件。

标签: java android android-layout android-intent


【解决方案1】:

您必须做的第一件事(如果您没有)是在您的 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);
    }
}

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

【讨论】:

    猜你喜欢
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    相关资源
    最近更新 更多