0

こんにちは、現在、Android アプリケーションに と という 2 つのパッケージがあります。次のコードでアクティビティからアクティビティをアクティブ化しようとしcom.packageaています。com.packagebcom.packagebcom.packagea

    String username = ((android.widget.EditText)findViewById(R.id.editUserName)).getText().toString();
    String pass = ((android.widget.EditText)findViewById(R.id.editPass)).getText().toString();
    Intent i = new Intent(this, Authenticate.class);
    i.putExtra("uname", username);
    i.putExtra("pass",pass);
    startActivityForResult(i, 1);

ただし、にある Authenticate.class には入りませんcom.packageb。そのクラスに参加しない理由についての提案。マニフェストファイルでアクティビティを宣言した方法は次のとおりです

    <activity
        android:name=".Authenticate"
        android:label="@string/title_activity_options" >
    </activity>

これと一緒にパッケージ名を指定する必要がありますか。これは、別のパッケージからアクティビティを呼び出そうとしたときにのみ発生します。この問題を解決する方法に関する提案

4

2 に答える 2

0

完全修飾名を使用してみてください。

 com.packageb.Authenticate

    <activity
      android:name="com.packageb.Authenticate"
      android:label="@string/title_activity_options" >
  </activity>

それ以外の

 <activity
    android:name=".Authenticate"
    android:label="@string/title_activity_options" >
</activity>
于 2013-02-23T04:08:33.417 に答える
0

Authenticate アクティビティが com.packageb にあり、それを com.packagea パッケージから呼び出そうとする場合は、ceonvenience メソッドIntent.setClassName()を使用できます。

Intent i = new Intent();
i.setClassName("com.packageb", "com.packageb.Authenticate");
...
于 2013-02-23T05:15:10.157 に答える