- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 android 开发的新手,目前我正在将数据发布和获取到 php 文件。我无法找到为什么 getData() 函数在主要 Activity 中不起作用,但它在另一个 Activity 中正常工作。我将相同的功能从仪表板 Activity 复制到主要 Activity 。
这是我的主要 Activity 代码
public class MainActivity extends ActionBarActivity {
private static final String TAG = "MainActivity.java";
private EditText editEmail;
private EditText editPass;
TextView resultView;
@Override
protected void onCreate(Bundle savedInstanceState) {
final Button loginButton;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resultView = (TextView) findViewById(R.id.result);
getData();
editEmail = (EditText) findViewById(R.id.userEmail);
editPass = (EditText) findViewById(R.id.userPassword);
loginButton = (Button) findViewById(R.id.buttonlogin);
loginButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
final String email = editEmail.getText().toString();
final String pass = editPass.getText().toString();
//perform action
if (!isValidEmail(email)) {
editEmail.setError("Please enter valid Email...");
}
else if (!isValidPassword(pass)) {
editPass.setError("Please enter valid Password");
}else{
new PostDataAsyncTask().execute();
startActivity(new Intent(MainActivity.this, DashboardActivity.class));
}
//if (emailEditText.getText().toString().trim().length()==0) {
//Toast.makeText(getBaseContext(), "Email is empty!!!", Toast.LENGTH_SHORT).show();
//return;
// }else{
// Redirect to Another Activity
//startActivity(new Intent(MainActivity.this, DashboardActivity.class));
// }
//if(upassword.getText().toString().trim().length()==0){
// Toast.makeText(getBaseContext(), "Password is empty!!!", Toast.LENGTH_SHORT).show();
//return;
//}
}
});
}
// validating email id
private boolean isValidEmail(String email) {
String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
Pattern pattern = Pattern.compile(EMAIL_PATTERN);
Matcher matcher = pattern.matcher(email);
return matcher.matches();
}
// validating password with retype password
private boolean isValidPassword(String pass) {
if (pass != null && pass.length() > 10) {
return true;
}
return false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public class PostDataAsyncTask extends AsyncTask<String, String, String> {
protected void onPreExecute() {
super.onPreExecute();
// do stuff before posting data
}
@Override
protected String doInBackground(String... strings) {
try {
// 1 = post text data, 2 = post file
int actionChoice = 2;
// post a text data
if(actionChoice==1){
postText();
}
} catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String lenghtOfFile) {
// do stuff after posting data
}
}
// this will post our text data
private void postText(){
final String email = editEmail.getText().toString();
final String pass = editPass.getText().toString();
try{
// url where the data will be posted
String postReceiverUrl = "http://xyzweb.com/appservice.php";
Log.v(TAG, "postURL: " + postReceiverUrl);
// HttpClient
HttpClient httpClient = new DefaultHttpClient();
// post header
HttpPost httpPost = new HttpPost(postReceiverUrl);
// add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("first_name", email));
//nameValuePairs.add(new BasicNameValuePair("lastname", pass));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// execute HTTP post request
HttpResponse response = httpClient.execute(httpPost);
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
String responseStr = EntityUtils.toString(resEntity).trim();
Log.v(TAG, "Response: " + responseStr);
// you can add an if statement here and do other actions based on the response
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void getData(){
String result = "";
InputStream isr = null;
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://xyzweb.com/appservice.php"); //YOUR PHP SCRIPT ADDRESS
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
isr = entity.getContent();
}
catch(Exception e){
Log.e("log_tag", "Error in http connection " + e.toString());
resultView.setText("Couldnt connect to database");
}
//convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(isr,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
isr.close();
result=sb.toString();
}
catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
//parse json data
try {
String s = "";
JSONArray jArray = new JSONArray(result);
for(int i=0; i<jArray.length();i++){
JSONObject json = jArray.getJSONObject(i);
s = s +
"Name : "+json.getString("first_name")+"\n\n";
}
resultView.setText(s);
} catch (Exception e) {
// TODO: handle exception
Log.e("log_tag", "Error Parsing Data " + e.toString());
}
}
}
getData()
函数给出此错误 Couldnt connect to database
$name = urldecode($_POST['first_name']);
//$user = urldecode($_POST['user']);
//$email = urldecode($_POST['email']);
//$pass = urldecode($_POST['pass']);
$postdata = array();
$postdata[]['first_name'] = 'hjgjh';
print(json_encode($postdata));
最佳答案
getData() 函数执行远程 URL。这些类型的请求应该由后台线程而不是主线程处理。这可以像这样完成:
@Override
protected void onCreate(Bundle savedInstanceState) {
final Button loginButton;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resultView = (TextView) findViewById(R.id.result);
//Call your getData function from AsyncTask
new YourAsyncTask.execute();
...
}
public class YourAsyncTask extends AsyncTask<String, String, String> {
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... strings) {
//Call getData function from here
getData();
return null;
}
@Override
protected void onPostExecute(String lenghtOfFile) {
// do stuff after posting data
}
}
关于php - 为什么 getdata 函数对主要 Activity 起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32066000/
我如何在Android工作室项目中实现OneSignal时解决这个问题?
我正在从另一个电子表格中导入一个范围,然后使用此脚本将其粘贴到当前电子表格中: function getdata() { var values = SpreadsheetApp.openById('X
我正在观看来自 Slidenerd 的关于在 Android 上制作 Recycle View 的 Android 教程。这个链接:https://www.youtube.com/watch?v=Oo
public function json_product_list($where, $order){ global $_M; $this->table = load::sys_clas
我正在开发一个 Silverlight 3 应用程序,我想将所有意外错误处理委托(delegate)给一个我命名为 ErrorHandler 的类的单个实例。 .这个类有一个名为 HandleAppl
我有一个网站,允许用户进行输入并创建新内容。我总是使用tinymce 作为输入字段。今天切换到 ckeditor 后,我注意到我遇到了与最初使用 tinymce 时遇到的相同问题: 提交表单时,编辑器
我知道这个问题已经被问过几次了,但还没有一个答案真正帮助我解决我的问题。 我为三个下拉菜单设置了三个事件订阅者,它们相互依赖。 所以在我的 FormType 中我说: public functio
我无法理解如何从 short[] 获取 RGBA 值,该值是从 bufferedImage.getRaster().dataBuffer.getData() 获取的,如果 dataBuffer 是Da
#include #include #define MAX 20 #define MAX_BASE 8 #define ROW 9 #define COLUMN_SCORE 12 #define
谁能帮我理解这背后的逻辑? $(document).ready(function() { getData([renderData]); }); function renderData(JSON
我有一个类,比如“CDownloader”,它读取一些 XML 数据并提供通过节点名称的访问。它具有一些 getter 函数,如下所示: BOOL CDownloader::getInteger (
对于大学来说,我必须制作一个带有 MVC 风格编码的 JavaScript 游戏。 (模型、 View 、 Controller )。我对此很陌生,所以请不要太难。我收到以下错误:“未捕获类型错误:无
我对 Python 模块 PIL 有疑问: 每当我在图像上调用 getdata() 方法时,都会返回一些奇怪的东西。 from PIL import Image # Histogram class t
我正在使用 Texture2D.GetData()创建 Tilemap 的方法。这在我第一次执行时总是有效,但第二次该方法只是返回其他颜色,混淆了整个算法。我完全没有理由这样做。 我的代码: swit
我刚开始学习XNA/MonoGame,遇到了一个奇怪的异常。 错误提示:未实现方法或操作。 更奇怪的是,一个非常相似、几乎相同的代码却能工作。唯一的区别是其他代码在 XNA 和另一台计算机上运行,
首先,我会先说我是 javascript 的新手,所以希望这不是一个完整的脸谱问题。话虽如此,当用户点击它时,以下代码应该提醒编辑器的值。 function openEditor(){ html =
我正在使用 Monogame 将一款游戏从 XNA 转换到 iOS。 在下面的代码片段中,smallDeform 是一个 Texture2D,我在其上调用了 GetData 方法。 smallDefo
我有一个属性 cdn_image_name,它适用于大约 90 000 种产品。最近,内容编辑报告说大约有三种产品缺少图片。我已将问题确定为 Magento 的 getData() 方法。 这是与原始
byte [] r = new byte[4096]; DatagramPacket dpr = new DatagramPacket(r, r.length); sock.receive(dpr);
本文整理了Java中org.zeromq.ZFrame.getData()方法的一些代码示例,展示了ZFrame.getData()的具体用法。这些代码示例主要来源于Github/Stackoverf
我是一名优秀的程序员,十分优秀!