0

私の Android アプリケーションには、2 つのアクティビティがあります。

1 つはGmapsActivity1 はGmapsActivity1 2 つのレイアウト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 を開始します。as Intent コンストラクター は、同じものではない別のアクティビティ名として 2 番目のパラメーターを取ります。

機能させるには、以下の手順に従う必要があります。

1)アクティビティLoginActivityを作成し、ログインフォームを表示し、ログインボタンをクリックしてユーザー/ ID /パスワードを確認し、正しい場合はstartActivityとstartGmapsActivityを呼び出します。

2) GmapsActivity を作成し、ログイン画面の後に表示したいものを表示します。

3) マニフェスト ファイルに両方のアクティビティを登録します。

推奨されていない同じアクティビティで setContentView を 2 回呼び出すことは決してありません

于 2012-07-07T12:29:20.473 に答える
0

さて、あなたは持っています

GMapsActivity.javalogin.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..
     }

また、これを理解するために以下の簡単なチュートリアルを確認することもできます

Android のアクティビティからアクティビティを開始/ロード

まだ疑問があるので教えてください!!

于 2012-07-07T18:51:04.493 に答える