在我的Android应用程序中,我有两个活动。
一个是GmapsActivity
,一个是GmapsActivity1
,两个布局login.xml
和main.xml
默认情况下,我想加载login.xml
,然后我想在不同的密码条件下调用main.xml
。但是,当我呼叫GmapsActivity1
应用程序崩溃时。以下是GmapsActivity
public class GMapsActivity extends MapActivity {
EditText password;
Button login;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
password=(EditText)findViewById(R.id.pass);
login=(Button)findViewById(R.id.logbtn);
login.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
Intent myIntent = null;
if(password.getText().toString().equals("admin")) {
myIntent = new Intent(getApplicationContext(), GMapsActivity.class);
startActivity(myIntent);
} else {
Toast.makeText(getBaseContext(), "invalid password - try again", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
我怎么解决这个问题?
答案 0 :(得分:0)
添加此
myIntent.setFlag(Intent.FLAG_ACTIVITY_NEW_TASK);
答案 1 :(得分:0)
尝试这样,并在Manifest.xml
login.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(GMapsActivity .this,YourActivityTwo.class);
startActivity(intent);
}
});
答案 2 :(得分:0)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
password=(EditText)findViewById(R.id.pass);
login=(Button)findViewById(R.id.logbtn);
login.setOnClickListener(new OnClickListener(){
public void onClick(View v)
{
Intent myIntent = null;
if(password.getText().toString().equals("admin")) {
myIntent = new Intent(GMapsActivity1.this, GMapsActivity.class);
startActivity(myIntent);
} else {
Toast.makeText(getBaseContext(), "invalid password - try again", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
答案 3 :(得分:0)
我可以在您的代码中看到您在GmapsActivity
,并在登录按钮中点击您正在调用
myIntent = new Intent(getApplicationContext(), GMapsActivity.class);
startActivity(myIntent);
在再次启动GmapsAvtivity方面。作为Intent构造函数,第二个参数为另一个活动名称,而不是同一个。
您应该按照以下步骤使其正常运行。
1)创建一个活动LoginActivity,在其中显示登录表单,在登录按钮上单击检查用户/ id /密码,如果正确,请调用startActivity和startGmapsActivity。
2)创建GmapsActivity,并在登录屏幕后显示您想要显示的内容。
3)在清单文件中注册两个活动。
永远不要在同一活动中调用setContentView两次
答案 4 :(得分:0)
好的,所以你有
GMapsActivity.java login.xml
和 GmapsActivity1 main.xml
首先要像这样改变你的表现
<application
android:icon="@drawable/icon"
android:label="@string/app_name" >
<activity
android:name=".GMapsActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" >
<category android:name="android.intent.category.LAUNCHER" >
</category>
</action>
</intent-filter>
</activity>
<activity
android:name=".GmapsActivity1"
android:label="@string/app_name" >
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" >
</category>
</intent-filter>
</activity>
</application>
然后您的 GMapsActivity.java 应该喜欢这个
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
//..some code here..
}
@Override
public void onClick(View v) {
Intent i = new Intent(GMapsActivity.this, GmapsActivity1.class);
startActivity(i);
}
最后你的 GmapsActivity1.java 应该是这样的
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//..some code here..
}
您也可以查看下面的简单教程来理解这个
Start/Load Activity from Activity in Android
还有任何疑问,让我知道!!