编程语言
首页 > 编程语言> > 如何从java类启动Activity?

如何从java类启动Activity?

作者:互联网

我读了一些关于如何从应用程序中实现的另一个Java类调用Android活动的帖子,但没有回答我的问题.

我有一个连接类(Connection.java),它处理应用程序所需的永久连接.
这个是用Singleton模式构建的,所以每次我需要连接信息或请求我做的事情:

final Connection conn = Connection.getConnection(getApplicationContext());
//... Some Code Here
conn.methodDoSomethingA();

然后,我有一个TabActivity,其中包含5个活动(A,B,C,D,E):

public class Tab extends TabActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tab);

        final Connection conn = Connection.getConnection(getApplicationContext());

        intent = new Intent().setClass(this, A.class);
        spec = tabHost.newTabSpec("A")
                .setIndicator("A", res.getDrawable(R.drawable.tab_A))
                .setContent(intent);
        tabHost.addTab(spec);

        //... same for activities B, C, D and E

        tabHost.setCurrentTab(0);
    }
}

现在,我在Connection类中有一个公共方法来结束连接 – endConnection() – 在Connection类中多次调用,例如,当有Socket Timeout或从服务器接收通知结束会话的自定义消息时.

问题从这里开始 – 当调用endConnection()时,它必须关闭套接字然后显示一个Activity(Theme.Dialog),通知连接丢失.
为了达到这个目的,我做到了这一点,没有成功:

public class Connection {
    private static Connection connection = null;
    private Context appContext = null;

    private Connection(Context appContext) {
        this.appContext = appContext;
    }

    public static Connection getConnection(Context appContext) {
        if (connection == null)
            return connection = new Connection(appContext);
        else
            return connection;
    }

    public void endConnection() {
        // ... Close sockets and streams - SOME CODE HERE

        // Show Disconnect Dialog
        Intent myIntent = new Intent(appContext, Disconnect.class);
        myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        appContext.startActivity( myIntent );
    }
}

我还尝试将TabActivity上下文作为参数传递给Connection.java类,并使用它代替appContext,但也没有成功.

我收到这个错误:

W/dalvikvm(9449): threadid=3: thread exiting with uncaught exception (group=0x2aaca228)
E/AndroidRuntime(9449): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime(9449): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.Disconnect}: java.lang.NullPointerException

换句话说: – 如何从java类启动一个Activity?!

解决方法:

我发现了错误.

首先,我要感谢大家的意见.

显然我做的一切都很好,这就是它的完成方式!

错误是一个让我感到尴尬的新手错误:

Disconnect.java有一个监听器,该监听器在他的Content View XML布局文件中不存在,但它存在于另一个布局中!

我从来没有怀疑过!愚蠢,不是吗??

我希望这篇文章可以帮助每个人做以下两件事之一:

>从另一个java类调用一个活动;
>不要在不探究不可思议的错误的情况下发布问题!

标签:java,android,android-activity,android-context,tabactivity
来源: https://codeday.me/bug/20190626/1292907.html