0

嗨,我目前在我的 android 应用程序中有两个包说com.packageacom.packageb。现在我正在尝试通过以下代码com.packageb从一个活动中激活一个活动com.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 回答