Java 异步任务运行时异常执行doInBacground()时出错
当我申请时,它会给我错误 main活动Java 异步任务运行时异常执行doInBacground()时出错,java,android,xmpp,Java,Android,Xmpp,当我申请时,它会给我错误 main活动 public class MainActivity<XMPPConnection> extends Activity { private ArrayList<String> messages = new ArrayList(); private Handler mHandler = new Handler(); private SettingsDialog mDialog; private EditText mRecipie
public class MainActivity<XMPPConnection> extends Activity {
private ArrayList<String> messages = new ArrayList();
private Handler mHandler = new Handler();
private SettingsDialog mDialog;
private EditText mRecipient;
private EditText mSendText;
private ListView mList;
private XMPPConnection connection;
public static String setConnection;
/**
* Called with the activity is first created.
*/
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Log.i("XMPPClient", "onCreate called");
setContentView(R.layout.activity_main);
mRecipient = (EditText) this.findViewById(R.id.recipient);
Log.i("XMPPClient", "mRecipient = " + mRecipient);
mSendText = (EditText) this.findViewById(R.id.sendText);
Log.i("XMPPClient", "mSendText = " + mSendText);
mList = (ListView) this.findViewById(R.id.listMessages);
Log.i("XMPPClient", "mList = " + mList);
setListAdapter();
// Dialog for getting the xmpp settings
mDialog = new SettingsDialog(this);
new MyTask().execute();
// Set a listener to show the settings dialog
Button setup = (Button) this.findViewById(R.id.setup);
setup.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
new MyTask().execute();
}
});
// Set a listener to send a chat text message
Button send = (Button) this.findViewById(R.id.send);
send.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
String to = mRecipient.getText().toString();
String text = mSendText.getText().toString();
Log.i("XMPPClient", "Sending text [" + text + "] to [" + to + "]");
Message msg = new Message(to, Message.Type.chat);
msg.setBody(text);
((org.jivesoftware.smack.XMPPConnection) connection).sendPacket(msg);
messages.add(((org.jivesoftware.smack.XMPPConnection) connection).getUser() + ":");
messages.add(text);
setListAdapter();
}
});
}
/**
* Called by Settings dialog when a connection is establised with the XMPP server
*
* @param connection
*/
public void setConnection
(XMPPConnection
connection) {
this.connection = connection;
if (connection != null) {
// Add a packet listener to get messages sent to us
PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
((Connection) connection).addPacketListener(new PacketListener() {
public void processPacket(Packet packet) {
Message message = (Message) packet;
if (message.getBody() != null) {
String fromName = StringUtils.parseBareAddress(message.getFrom());
Log.i("XMPPClient", "Got text [" + message.getBody() + "] from [" + fromName + "]");
messages.add(fromName + ":");
messages.add(message.getBody());
// Add the incoming message to the list view
mHandler.post(new Runnable() {
public void run() {
setListAdapter();
}
});
}
}
}, filter);
}
}
private void setListAdapter
() {
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.multi_line_list_item,
messages);
mList.setAdapter(adapter);
}
public类MainActivity扩展活动{
private ArrayList messages=new ArrayList();
私有处理程序mHandler=新处理程序();
私人设置对话mDialog;
私人编辑文本;
私有编辑文本mSendText;
私有ListView-mList;
专用XMPPConnection连接;
公共静态字符串连接;
/**
*首先创建使用活动调用的。
*/
@凌驾
创建公共空间(捆绑冰柱){
超级冰柱;
Log.i(“XMPPClient”,“onCreate被调用”);
setContentView(R.layout.activity_main);
mRecipient=(EditText)this.findViewById(R.id.recipient);
Log.i(“XMPPClient”,“mRecipient=“+mRecipient”);
mSendText=(EditText)this.findViewById(R.id.sendText);
Log.i(“XMPPClient”、“mSendText=“+mSendText”);
mList=(ListView)this.findViewById(R.id.listMessages);
Log.i(“XMPPClient”,“mList=“+mList”);
setListAdapter();
//用于获取xmpp设置的对话框
mDialog=新设置对话框(此);
新建MyTask().execute();
//设置侦听器以显示“设置”对话框
按钮设置=(按钮)this.findViewById(R.id.setup);
setup.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图){
新建MyTask().execute();
}
});
//设置侦听器以发送聊天文本消息
按钮发送=(按钮)this.findViewById(R.id.send);
send.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图){
字符串to=mRecipient.getText().toString();
字符串text=mSendText.getText().toString();
Log.i(“XMPPClient”,“发送文本[“+text+”]到[“+to+”]”);
Message msg=新消息(收件人,Message.Type.chat);
msg.setBody(文本);
((org.jivesoftware.smack.XMPPConnection)连接);
messages.add((org.jivesoftware.smack.XMPPConnection)connection.getUser()+“:”;
消息。添加(文本);
setListAdapter();
}
});
}
/**
*当与XMPP服务器建立连接时,由设置对话框调用
*
*@param连接
*/
公共连接
(xmppc)连接
连接){
这个连接=连接;
if(连接!=null){
//添加数据包侦听器以获取发送给我们的消息
PacketFilter=newmessagetypefilter(Message.Type.chat);
((连接)连接).addPacketListener(新的PacketListener(){
公共无效处理数据包(数据包){
消息消息=(消息)数据包;
if(message.getBody()!=null){
String fromName=StringUtils.parseBareAddress(message.getFrom());
Log.i(“XMPPClient”,“从[“+fromName+”]”获取文本[“+message.getBody()+”];
messages.add(fromName+“:”);
messages.add(message.getBody());
//将传入消息添加到列表视图
mHandler.post(新Runnable(){
公开募捐{
setListAdapter();
}
});
}
}
},过滤器);
}
}
私有void setListAdapter
() {
ArrayAdapter=新的ArrayAdapter(此,
R.layout.multi_line_list_项目,
信息);
mList.setAdapter(适配器);
}
}
这是我的任务课
private MainActivity<XMPPConnection> MainActivity;
private XMPPConnection setConnection;
@Override
protected String doInBackground(String... params) {
String host = "web.vlivetech.com"; //getText(R.id.host);
String port = "5222"; //
String service = "web.vlivetech.com";// getText(R.id.service);
String username ="has12345"; // getText(R.id.userid); //
String password = "123";// getText(R.id.password); //
// Create a connection
ConnectionConfiguration connConfig =
new ConnectionConfiguration(host, Integer.parseInt(port), service);
XMPPConnection connection = new XMPPConnection(connConfig);
try {
connection.connect();
Log.i("XMPPClient", "[SettingsDialog] Connected to " + connection.getHost());
} catch (XMPPException ex) {
Log.e("XMPPClient", "[SettingsDialog] Failed to connect to " + connection.getHost());
MainActivity.setConnection(null);
}
try {
connection.login(username, password);
Log.i("XMPPClient", "Logged in as " + connection.getUser());
// Set the status to available
Presence presence = new Presence(Presence.Type.available);
connection.sendPacket(presence);
**MainActivity.setConnection(connection);**
} catch (XMPPException ex) {
Log.e("XMPPClient", "[SettingsDialog] Failed to log in as " + username);
MainActivity.setConnection(null);
}
return null;
}
private String getText(int id) {
EditText widget = (EditText) this.findViewById(id);
return widget.getText().toString();
}
private EditText findViewById(int id) {
// TODO Auto-generated method stub
return null;
}
}
private main活动main活动;
私有XMPPConnection-setConnection;
@凌驾
受保护的字符串doInBackground(字符串…参数){
String host=“web.vlivetech.com”;//getText(R.id.host);
字符串端口=“5222”;//
String service=“web.vlivetech.com”;//getText(R.id.service);
字符串username=“has12345”///getText(R.id.userid);//
String password=“123”///getText(R.id.password);//
//创建连接
连接配置CONNCONCONFIG=
新的连接配置(主机、Integer.parseInt(端口)、服务);
XMPPConnection连接=新的XMPPConnection(connconconfig);
试一试{
connection.connect();
Log.i(“XMPPClient”,连接到“+connection.getHost()”的“[SettingsDialog]”;
}捕获(XMPPException-ex){
Log.e(“XMPPClient”,“[SettingsDialog]无法连接到”+connection.getHost());
MainActivity.setConnection(空);
}
试一试{
连接。登录(用户名、密码);
Log.i(“XMPPClient”,“以“+connection.getUser()身份登录”);
//将状态设置为“可用”
状态=新状态(Presence.Type.available);
连接。发送数据包(存在);
**MainActivity.setConnection(连接)**
}捕获(XMPPException-ex){
Log.e(“XMPPClient”,“[SettingsDialog]以“+用户名”登录失败);
MainActivity.setConnection(空);
}
返回null;
}
私有字符串getText(int-id){
EditText小部件=(EditText)this.findViewById(id);
返回widget.getText().toString();
}
私有EditText findViewById(内部id){
//TODO自动生成的方法存根
返回null;
}
}
当我调试代码时,这将获得连接值,但在这一行终止MainActivity.setConnection(连接)强>
现在我做错了什么
getText(int host)
主机、端口、服务、用户名和密码返回null。这不会带你走多远。
private main活动main活动
main活动是一个活动类是的,它是一个主要活动类!此实例化的MainActivity
在哪里。如果你做到了,那就做吧