如何在Android中从普通Java类调用Activity类

4

我有一个普通的Java类,叫做ReceivedChat.java,在这个类的构造函数中,我想要调用一个Android的Activity。

public class ReceivedChat {
    String message;
    String from;
    Context context;

    ReceivedChat(String message, String from) {
        this.message = message;
        this.from = from;

        Bundle b = new Bundle();
        b.putString("message", this.message);
        b.putString("from", this.from);
        b.putString("fromChat", "true");

        Intent i = new Intent(context.getApplicationContext(), XmppChatActivity.class);
        i.putExtras(b);
        context.getApplicationContext().startActivity(i);
    }
}

我的Activity类是XmppChatActivity

这个程序不起作用,它没有调用我XmppChatActivity类的onCreate()方法。希望能得到帮助,非常感谢。


你在哪里初始化 context - Farnabaz
1个回答

14

如何从普通的Java类中调用一个Activity类

在创建对象时,您需要将当前活动上下文传递给ReceivedChat,可以从Activity或其他应用程序组件中进行:

ReceivedChat(String message, String from,Context context)
{
this.message = message;
this.from = from;
this.context=context;  //<< initialize Context here 
Intent i = new Intent(context,XmppChatActivity.class);
 //....your code here
context.startActivity(i);

}

不要从类构造函数中启动另一个Activity,而是在ReceivedChat类中创建一个方法,并在对象创建后调用它。


ReceivedChat 构造函数是从 JNI 调用的,我在那里没有上下文环境,所以无法传递上下文。 - user2139898
@user2139898:那么请通过使用单例模式类来改变您的代码逻辑,例如Application Class。通过在ReceivedChat class中获取Application context而不是最新的活动上下文,才能启动活动。 - ρяσѕρєя K
对于单例类,我无法从JNI调用其构造函数。感谢任何帮助。 - user2139898
1
谢谢。这很有用。现在我可以完成我的任务了。非常感谢你。 - user2139898
问题已经存在,但没有答案。如何在Android中播放视频内容而不需要URI和文件路径? - user2139898
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接