我在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);
}
}
答案 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
。
这是通过不同活动进行的非常简单的示例。这可能对您有所帮助。尝试理解我的简单代码并根据您的需要进行重构。