从另一个包发出活动的问题

时间:2013-02-23 03:32:53

标签: android

您好我的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);

然而,它甚至不会进入com.packageb中的Authenticate.class。任何建议为什么它不进入该类。以下是我在清单文件中声明活动的方法

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

我是否需要指定包名称。这只发生在我尝试从另一个包调用一个活动时。有关如何解决此问题的任何建议

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

如果Authenticate活动在com.packageb中并且您尝试从com.packagea包中调用它,则可以使用ceonvenience方法Intent.setClassName()

Intent i = new Intent();
i.setClassName("com.packageb", "com.packageb.Authenticate");
...