❶ android报错"Gradle:invalid symbol:switch'"怎么解决
开发工具androidstudio1、新建工程2、配置project下的build.gradle,添加如下代码classpath'com.neenbedankt.gradle.plugins:android-apt:1.4'3、配置APP下build.gradleapplyplugin:'android-apt'defAAVersion='3.3.1'apt"org.androidannotations:androidannotations:$AAVersion"compile"org.androidannotations:androidannotations-api:$AAVersion"3、最后菜单Bulid->makeproject即可使用AA了举个代码例子,如下packagecom.gservfocus.testaa;importandroid.support.v7.app.AppCompatActivity;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.ImageView;importcom.gservfocus.testaa.net.RestClient;importcom.gservfocus.testaa.net.TokenRestClient;importorg.androidannotations.annotations.AfterViews;importorg.androidannotations.annotations.Click;importorg.androidannotations.annotations.EActivity;importorg.androidannotations.annotations.OptionsMenu;importorg.androidannotations.annotations.ViewById;importorg.androidannotations.annotations.rest.RestService;@EActivity(R.layout.activity_main)@OptionsMenu(R.menu.main_menu){@;@;@ViewById(R.id.testImageView)ImageViewtestImageView;@ViewById(R.id.requestBtn)ButtonrequestBtn;@ViewById(R.id.resultET)EditTextresultET;publicvoidonDestroy(){super.onDestroy();}@AfterViewsvoidafterViews(){resultET.setText("点击登录哟");}@Click({R.id.requestBtn})voidonClick(Viewview){switch(view.getId()){caseR.id.requestBtn:{OrmDatabaseActivity_.intent(this).start();break;}}}}
❷ Android studio 导入融云 IMlIB IDE 报错
在您集成融云 SDK 前环境要求如下:
Android SDK Build-tools 请升级到 21 及以上版本。
使用 IMKit 需要 Android Support V4 21 及以上版本。
Android SDK 最低支持 Android API 15: Android 4.0.3。
官网上到是没要求Android studio版本。感觉java版本问题可能性多点。可能多版本冲突。
其他要求也一个个对一下。
❸ 如何在一个android工程中调用另一个android工程的代码和资源啊
现在已经有了一个Android工程A。我们想扩展A的功能,但是不想在A的基础上做开发,于是新建了另外一个Android工程B,想在B中引用A。
1. 把工程A做成纯Jar包,这样其他的工程就可以直接引用了。
但是,如果在工程A中用了R.java中的引用,则无法打成jar包了。原因是R.java是自动生成的,是动态的,每次编译都是不相同的。如果一定要做成jar包,就不能使用自动生成的R文件,用到资源时候就要写代码去获取。
有时会报错:Conversion to Dalvik format failed with error 1
可能是多层包文件重复导入,冲突。。。
这时可以试试方法2
2.将工程A做成android library project。
设置工程A,右键->Properties->Android,将Is library项选中,然后Apply。设置工程B,右键->Properties->Android,在Library中,点击Add按钮,将A工程加入,然后Apply。此时在B中就引入了A中的资源和代码,这些资源和代码都可以直接调用。需要注意的是,因为A已经不再是一个完整的Android应用,而是一个类库工程,所以有一些内容还需要在B中配置一下。比如A中有lib库引用,则B中也要加入该lib库;比如A中的AndroidManifest.xml文件的内容,在B的AndroidManifest.xml文件中也要相应加上。。。
如果不需要引用A工程的资源文件,同样只需得到jar文件,
设置工程A,右键->Properties->Android,将Is library项选中,然后Apply。在A工程的bin目录下能得到一个jar文件,可以到B工程中的libs目录下直接引用。
如果能用jar当然最好,但是jar文件不能把res目录下的资源打包进去,所以才出现lib工程。
创建和使用Android library工程
摘要: 创建library供多个工程共享代码、资源是非常常见的需求,网上这种资料非常少,基本上都是讲创建java工程,然后export,这种方式缺点非常多,大家可以自己google一下。本文着重介绍如何创建Android library,并且在 ...
创建library供多个工程共享代码、资源是非常常见的需求,网上这种资料非常少,基本上都是讲创建java工程,然后export,这种方式缺点非常多,大家可以自己google一下。
本文着重介绍如何创建Android library,并且在工程中使用此library提供的资源,具体步骤如下:
1. 创建一个Android工程,命名为MyLib
2. 进入工程设置选中Is Library
3. 创建另一个Android工程,命名为MyProj
4. 进入工程设置,添加MyLib
5. 在MyProj的AndroidManifest.xml中加入对library中activity的引用
<activity android:name="net.devdiv.mylib.MyLib" />
6. 由于编译后library中的资源和引用它的project资源是合并在一起的,为了避免重名问题,需要对library中资源进行重命名
1). 把main.xml改为mylib.xml,同时修改MyLib.java代码setContentView(R.layout.mylib);
2). strings.xml修改为
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="mylibhello">String fetched from lib!</string>
<string name="mylib_app_name">MyLib</string>
</resources>
7. 在MyProj中引用MyLib的资源
package net.devdiv.myproj;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import net.devdiv.mylib.*;
import android.content.Intent;
public class MyProj extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv = (TextView)findViewById(R.id.myprojtext);
tv.setText(R.string.mylibhello);
Intent it = new Intent(this, MyLib.class);
startActivity(it);
}
}
❹ 我在Android开发上,想要连接socket。报错NetworkOnMainThread这么改
耗时的子程序不许放在主线程中,你得用线程运行它。
错误就是你的 网络操作在主线程中;
package com.Android.tcpchat;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
//import java.text.SimpleDateFormat;
//import java.util.Date;
import java.util.Vector;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
//--------Socket服务端----------------------
TextView textView1;
ServerSocket serverSocket;
Handler sHandler;
Vector<Socket> vector; // 管理客户
//--------Socket客户端----------------------
TextView textView2;
EditText editText1;
Button button1;
Button button2;
Socket clientSocket;
Handler cHandler;
//--------Socket服务端----------------------
Handler timer_handler;
Runnable timer_runnable;
void initTimer() // 初始定时器
{
timer_handler=new Handler();
timer_runnable=new Runnable()
{
public void run()
{ //
timer_handler.postDelayed(this,1000); // this指runnable自已,再次启动
}
};
}
void startTimer() // 启动定时器
{
timer_handler.post(timer_runnable); // 立即执行runnable对象
}
void closeTimer() // 关闭定时器
{
timer_handler.removeCallbacks(timer_runnable);
}
//--------------------------------------------
void dispClients()
{ //显示所有客户
int n=vector.size();
String ss="\n"+n+" clients:\n";
for (int i=0;i<vector.size();i++)
{
Socket sk=vector.get(i);
String ip=sk.getInetAddress().toString();
String port=""+sk.getPort();
ss+=""+ip+","+port+"\n";
}
textView1.setText(ss);
}
void writeSocket(Socket sk,String s)
{ // 向客户端Socket发字符串
DataOutputStream outf;
try
{
outf=new DataOutputStream(sk.getOutputStream());
if (!sk.isClosed())
outf.writeUTF(s);
}
catch(Exception e)
{
}
}
void writeSock(final Socket sk,final String s)
{ // 子线程中向客户端Socket发字符串
new Thread(new Runnable()
{
@Override
public void run()
{
writeSocket(sk,s);
}
}).start();
}
void sendAll(final String s)
{ // 向所有管理中的客户Socket发串
for (int i=0;i<vector.size();i++)
{
Socket sk=vector.get(i);
writeSock(sk,s);
}
}
void readSocket(Socket sk)
{ // 服务端读Socket
DataInputStream inf;
try
{
inf=new DataInputStream(sk.getInputStream());
while(sk.isConnected() && !sk.isClosed())
{
String s=inf.readUTF();
if (s.length()>0)
{ // 读到字符串后,通知主程序处理
String ip=sk.getInetAddress().toString();
String port=""+sk.getPort();
s=ip+","+port+":"+s+"\n";
Message msg=sHandler.obtainMessage(1,s);
sHandler.sendMessage(msg);
}
}
}
catch(Exception e)
{
}
}
void readSock(final Socket sk)
{ // 子线程中读
new Thread(new Runnable()
{
@Override
public void run()
{
readSocket(sk);
}
}).start();
}
void listen(ServerSocket ssk) // 接受多个客户端连接请求
{
while (!ssk.isClosed())
try
{
Socket sk=ssk.accept();
vector.add(sk); // 有客户连接
readSock(sk);
// 通知刷新客户列表
Message msg=sHandler.obtainMessage(0,"");
sHandler.sendMessage(msg);
}
catch(Exception e)
{
}
}
void listen() // 线程接受多个客户端连接请求
{
new Thread(new Runnable()
{
@Override
public void run()
{
listen(serverSocket);
}
}).start();
}
//------------Socket客户端----------------------
Socket newSocket(String ip,int port)
{
Socket sk=null;
try
{
sk=new Socket(ip,port);
}
catch(Exception e)
{
}
return(sk);
}
void clientRead(Socket sk)
{ // 客户端读Socket
DataInputStream inf;
try
{
inf=new DataInputStream(sk.getInputStream());
while(sk.isConnected() && !sk.isClosed())
{
String s=inf.readUTF();
if (s.length()>0)
{
Message msg=cHandler.obtainMessage(2,s);
cHandler.sendMessage(msg);
}
}
}
catch(Exception e)
{
}
}
void clientRead(final String ip,final int port)
{ // 子线程中客户端读Socket
new Thread(new Runnable()
{
@Override
public void run()
{
Socket sk=newSocket(ip,port);
clientSocket=sk;
if (sk!=null)
clientRead(sk);
}
}).start();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//---------------Socket服务端---------------------------------
textView1=(TextView)findViewById(R.id.textView1);
textView1.setText("");
//-----服务端的消息处理器sHandler
sHandler=new Handler()
{
@Override
public void handleMessage(Message msg)
{
switch (msg.what)
{
case 0:
dispClients(); // list clients
break;
case 1:
String s=msg.obj.toString();
sendAll(s);
break;
}
}
};
vector=new Vector<Socket>();
try
{
serverSocket=new ServerSocket(9003);
listen();
}
catch(Exception e)
{
}
//---------Socket客户端----------------------------------
cHandler=new Handler()
{ // 客户端消息处理器
@Override
public void handleMessage(Message msg)
{
String s=msg.obj.toString();
textView2.append(s);
}
};
clientRead("127.0.0.1",9003);
clientRead("10.0.2.15",9003);
textView2=(TextView)findViewById(R.id.textView2);
textView2.setText("");
editText1=(EditText)findViewById(R.id.editText1);
button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
try
{
String s=editText1.getText().toString();
writeSock(clientSocket,s);
}
catch(Exception e)
{
}
} //public
});
button2=(Button)findViewById(R.id.button2);
button2.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
try
{
String s="中华人民共和国";
writeSock(clientSocket,s);
}
catch(Exception e)
{
}
} //public
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{ // 按返回键的退出处理
if (keyCode == KeyEvent.KEYCODE_BACK )
{
try
{ // 防止出现端口已绑定的错误
serverSocket.close();
finish();
System.exit(0);
}
catch(Exception e)
{
}
}
return(false);
}
}