Android Manifest – «Не имеет конструктора по умолчанию» С Activity / Runnable Class

У меня довольно запутанная проблема. Я пытаюсь запустить базовый клиент чата через Android. Я установил его в 3 классах моего основного проекта. Проблема в том, что по какой-то нечетной причине мой ChatConnect.java (который обрабатывает фактический обмен чатами), похоже, не появляется как Activity для AndroidManifest.xml, что вызывает некоторые серьезные проблемы – AKA мне нужно использовать макет (в частности Game.xml) в моем классе ChatConnect, и он отказывается загружаться из-за того, что он не определяется как активность в манифесте. В любом случае, вот мои три класса.

Да, я понимаю, что StrictMode ужасно ужасен. Однако я также не могу заставить клиент чата работать без него, даже с указанными разрешениями в манифесте. Я пробовал очистить свой проект.

Вся помощь очень ценится!

ChatConnect.java

package com.example.AndroidRPGNew.multiplayer; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.example.AndroidRPGNew.Main; import com.example.AndroidRPGNew.R; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; public class ChatConnect extends Activity implements Runnable { // Begin displaying messages to game.xml. Display to chatView via new lines. // Ability to send message via chatMessageSend - Sends chat message data from chatMessage text field // Once connected, log to chat. Allow for multicolors, etc. private Socket socket; public String userId; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.game); SharedPreferences settings = getSharedPreferences(Main.PREFS_NAME, 0); userId = settings.getString("userId", "unknown"); run(); } public ChatConnect(Socket s){ socket = s; } public void run(){ try{ final Scanner chat = new Scanner(System.in); final Scanner in = new Scanner(socket.getInputStream()); final PrintWriter out = new PrintWriter(socket.getOutputStream()); Button sendMessage = (Button) findViewById(R.id.chatMessageSend); // ERROR HERE: ALTHOUGH IT IS SUPPOSED TO BE IN GAME.XML CONTENT VIEW, THIS CAUSES A NULLPOINTER! sendMessage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TextView input = (TextView) findViewById(R.id.chatMessage); String inputMsg = input.toString(); out.println(inputMsg); out.flush(); if(in.hasNext()){ System.out.println(in.nextLine()); } } }); while(true){ String input = chat.nextLine(); out.println(input); out.flush(); if(in.hasNext()){ System.out.println(in.nextLine()); } } } catch(Exception e){ e.printStackTrace(); } } } 

AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.AndroidRPGNew" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="16"/> <application android:label="@string/app_name" android:icon="@drawable/ic_launcher"> <activity android:name="com.example.AndroidRPGNew.Main" android:label="@string/app_name" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name="com.example.AndroidRPGNew.SettingsHandler" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.StoreHandler" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.Loading" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.MusicInitiator" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.multiplayer.AccountCreate" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.multiplayer.AccountSetup" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.multiplayer.MultiplayerMenu" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.multiplayer.SQLConnection" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.multiplayer.ServerConnect" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.multiplayer.ChatConnect" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> </application> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.NETWORK" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> </manifest> ? <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.AndroidRPGNew" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="16"/> <application android:label="@string/app_name" android:icon="@drawable/ic_launcher"> <activity android:name="com.example.AndroidRPGNew.Main" android:label="@string/app_name" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name="com.example.AndroidRPGNew.SettingsHandler" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.StoreHandler" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.Loading" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.MusicInitiator" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.multiplayer.AccountCreate" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.multiplayer.AccountSetup" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.multiplayer.MultiplayerMenu" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.multiplayer.SQLConnection" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.multiplayer.ServerConnect" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> <activity android:name="com.example.AndroidRPGNew.multiplayer.ChatConnect" android:screenOrientation="landscape" android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"> </activity> </application> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.NETWORK" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> </manifest> 

ServerConnect.java

 package com.example.AndroidRPGNew.multiplayer; import android.app.Activity; import android.os.Bundle; import android.os.StrictMode; import android.util.Log; import com.example.AndroidRPGNew.R; import java.net.Socket; /** * Created by fccardiff on 9/18/14. */ public class ServerConnect extends Activity { // Establish connection to server, with IP from MultiplayerMenu // Initiate ChatConnect String userId = null; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); setContentView(R.layout.game); // TODO: KEEP THE ABOVE TWO LINES ONLY TEMPORARILY - FIND A FIX! connect(); } public void connect() { final int port = 2525; final String IP = MultiplayerMenu.getIP(); try { Socket s = new Socket(IP, port); Log.w("Server:", "Connected to " + IP + ":" + port); ChatConnect client = new ChatConnect(s); Thread thread = new Thread(client); thread.start(); } catch (Exception serverNotFound) { serverNotFound.printStackTrace(); } } } 

Классы Activity Android должны иметь конструктор по умолчанию, который не принимает никаких параметров. Класс ChatConnect имеет этот конструктор:

 public ChatConnect(Socket s){ socket = s; } 

Но система ищет одно вот так:

 public ChatConnect(){ } 

И не найдя его, поэтому он рушится.