如何在android中处理两个布局的两个活动

时间:2012-07-07 11:50:33

标签: android android-layout

在我的Android应用程序中,我有两个活动。

一个是GmapsActivity,一个是GmapsActivity1,两个布局login.xmlmain.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;
    }


    }

我怎么解决这个问题?

5 个答案:

答案 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

还有任何疑问,让我知道!!