0

在我的 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;
    }


    }

我怎么能解决这个问题?

4

5 回答 5

0

添加这个

myIntent.setFlag(Intent.FLAG_ACTIVITY_NEW_TASK);
于 2012-07-07T11:59:51.830 回答
0

试试这个,并在你的Manifest.xml

login.setOnClickListener(new View.OnClickListener() { 

    public void onClick(View v) {               
      Intent intent = new Intent(GMapsActivity .this,YourActivityTwo.class);                        
      startActivity(intent);
   }
});
于 2012-07-07T12:00:53.910 回答
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;
}

}

于 2012-07-07T12:04:56.303 回答
0

我可以在您的代码中看到您所在的位置,GmapsActivity并在登录按钮中单击您正在调用

myIntent = new Intent(getApplicationContext(), GMapsActivity.class);
                startActivity(myIntent);

这意味着再次启动 GmapsAvtivity。作为 Intent 构造函数,将第二个参数作为 另一个不同的活动名称

您应该按照以下步骤使其正常工作。

1) 创建一个活动 LoginActivity,在其中显示登录表单,在登录按钮上单击检查用户/ID/密码,如果正确,则调用 startActivity 和 startGmapsActivity。

2)创建GmapsActivity,并在登录屏幕后显示您想要显示的任何内容。

3) 在清单文件中注册这两个活动。

永远不要在不推荐的同一活动中调用 setContentView 两次

于 2012-07-07T12:29:20.473 回答
0

好的,所以你有

GMapsActivity.javaGmapsActivity1login.xml _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..
     }

您也可以查看下面的简单教程以了解这一点

从 Android 中的 Activity 启动/加载 Activity

仍有疑问,请告诉我!!

于 2012-07-07T18:51:04.493 回答