Android Manifeste - “N'A Pas De Constructeur Par Défaut” De L'Activité/Classe Runnable

J'ai un assez déroutant problème. Je suis en train de lancer une base client de chat via Android. Je l'ai fixé dans les 3 classes de mon projet principal. Le problème est, pour une raison étrange, mon ChatConnect.java (qui gère réel de la messagerie chat) n'est pas apparente de pop-up comme une Activité pour AndroidManifest.xml qui est à l'origine de certains problèmes graves - AKA-je besoin d'utiliser une Mise en page (plus précisément game.xml dans ma ChatConnect classe et il refuse de charger comme un résultat de ne pas être définie comme une activité dans le manifeste. De toute façon, voici mes trois classes.

Oui, je me rends compte StrictMode est horriblement horrible. Cependant, je ne peux pas obtenir le client de chat de travailler sans elle, même avec ces autorisations dans le manifeste. J'ai essayé de nettoyer mon projet.

Toute aide est grandement appréciée!

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>

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();
}
}
}
Je ne suis pas sûr exactement ce que le problème est là...il "n'est pas apparente de pop-up comme une Activité pour AndroidManifest.xml"?
Leurs noms, quelques-uns de vos activités devraient effectivement être des activités. Les activités sont pour les interfaces utilisateur. Ils ne sont pas à usage général des classes Java que vous utilisez pour les sockets, ou des bases de données, ou quel que soit le diable un SettingsHandler est.

OriginalL'auteur Finn C | 2014-09-19