Как запустить Activity из класса java?

Я прочитал несколько сообщений о том, как я могу назвать активность Android из другого Java-класса, реализованного в приложении, но не отвечаю на мою проблему.

У меня есть класс подключения ( 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 

Другими словами: – Как запустить Activity из класса java ?!

Я нашел ошибку.

Прежде всего, я хочу поблагодарить всех вас за ваши комментарии.

Видимо, я все сделал нормально, и так оно и было!

Ошибка была ошибкой новичков, которая меня смущает:

У Disconnect.java был прослушиватель кнопки, которая не существовала в его макете формата Content View XML, но она существует в другом макете!

Я никогда не подозревал об этом! Глупо, не так ли ??

Я надеюсь, что этот пост может помочь каждому в одной из двух вещей:

  1. Вызывать действие из другого класса java ;
  2. Не отправляйте вопросы, не исследуя немыслимых ошибок !!!
Intereting Posts
Передайте и получите объект JSON из веб-службы Jersey Resftul от android Изображение MultipartEntity не загружается Как выделить ImageView при фокусировке или нажатии? Отправить электронное письмо в android с помощью JavaMail API с помощью smtp, но без SSL Дооснащение + OkHttp нормально при отправке запросов GET, но дает SocketTimetout при отправке POST Android получает высоту содержимого веб-обозревателя после рендеринга Уведомления GCM push на Android 3.1: отключить широковещательный приемник Передача ArrayList объектов через намерение – Java (Android) Ошибка при разрешении getLayoutInflater Фоновые рисунки определяют размер представления Как получить текущую ориентацию экрана? Обнаруживать, когда фрагмент становится видимым Android: масштабировать графическое или фоновое изображение? Использование оператора OR с 2-мя заполнителями с одинаковым значением Как сделать снимок экрана в эмуляторе Android