简体   繁体   English

无法实例化活动(Android)

[英]Unable to instantiate activity (Android)

This application try to connect to mysql and insert/update/delete data into database but when start application it displayed message "Unfortunately Project Has Stopped" 此应用程序尝试连接到mysql并将数据插入/更新/删除到数据库中,但是在启动应用程序时,它显示消息“不幸的是项目已停止”

MainActivity.java MainActivity.java

package com.example.testsql;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

 Button btn_select;
 Button btn_insert;
 Button btn_update;
 Button btn_delete;

 TextView tv_res;
 EditText txt_hn;
 EditText txt_name;
 EditText txt_age;

 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 // ตั้งค่าตัวแปล View
 tv_res = (TextView)findViewById(R.id.tv_res);
 txt_hn = (EditText)findViewById(R.id.txt_hn);
 txt_name = (EditText)findViewById(R.id.txt_name);
 txt_age = (EditText)findViewById(R.id.txt_age);

 btn_select = (Button)findViewById(R.id.btn_select);
 btn_select.setOnClickListener(this);

 btn_insert = (Button)findViewById(R.id.btn_insert);
 btn_insert.setOnClickListener(this);

 btn_update = (Button)findViewById(R.id.btn_update);
 btn_update.setOnClickListener(this);

 btn_delete = (Button)findViewById(R.id.btn_delete);
 btn_delete.setOnClickListener(this);

 }

 @Override
 public void onClick(View v){
 switch(v.getId()){
 case R.id.btn_select:
 {
 select();
 break;
 }
 case R.id.btn_insert:
 {
 insert();
 break;
 }
 case R.id.btn_update:
 {
 update();
 break;
 }
 case R.id.btn_delete:
 {
 delete();
 break;
 }
 }
 }

 public void clsText(){
 txt_hn.setText("");
 txt_name.setText("");
 txt_age.setText("");
 }

 public void insert(){
 try{
 String hn = txt_hn.getText().toString().trim();
 String name = txt_name.getText().toString().trim();
 String age = txt_age.getText().toString().trim();
 if ( hn.equals("") || name.equals("") || age.equals("") ){
 return ;
 }
 ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
 nameValuePairs.add(new BasicNameValuePair("isAdd","true"));
 nameValuePairs.add(new BasicNameValuePair("hn",hn));
 nameValuePairs.add(new BasicNameValuePair("name",name));
 nameValuePairs.add(new BasicNameValuePair("age",age));
 HttpClient httpclient = new DefaultHttpClient();
 HttpPost httppost = new HttpPost("http://locahost/php_set_data.php");//Change IP to you WebServer
 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));
 httpclient.execute(httppost);
 clsText();
 }catch(Exception e){
 Log.d("log_err", "Error in http connection " + e.toString());
 }
 }

 public void update(){
 // Your update algorithm
 Toast.makeText(getApplicationContext(), "update",Toast.LENGTH_SHORT).show();
 }

 public void delete(){
 // Your delete algorithm
 Toast.makeText(getApplicationContext(), "delete",Toast.LENGTH_SHORT).show();
 }

 public void select() {
 tv_res.setText("");
 InputStream is = null;
 String js_result = "";
 try {
 HttpClient httpclient = new DefaultHttpClient();
 HttpPost httppost = new HttpPost("http://locahost/php_get_data.php");
 HttpResponse response = httpclient.execute(httppost);
 HttpEntity entity = response.getEntity();
 is = entity.getContent();
 } catch (Exception e) {
 Log.d("log_err", "Error in http connection " + e.toString());
 }
 try {
 BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
 StringBuilder sb = new StringBuilder();
 String line = null;
 while ((line = reader.readLine()) != null) {
 sb.append(line);
 }
 is.close();
 js_result = sb.toString();
 } catch (Exception e) {
 Log.e("log_tag", "Error converting result " + e.toString());
 }
 try {
 final JSONArray jArray = new JSONArray(js_result);
 for (int i = 0; i < jArray.length(); i++) {
 JSONObject jo = jArray.getJSONObject(i);
 String hn = jo.getString("hn");
 String name = jo.getString("name");
 String age = String.valueOf(jo.getInt("age"));
 String date_serv = jo.getString("date_serv");
 Log.d("log",hn+","+name+","+age+","+date_serv);
 tv_res.append(hn+","+name+","+age+","+date_serv+"\n");
 }
 } catch (JSONException e) {
 Log.e("log_tag", "Error parsing data " + e.toString());
 }
}
}

activity_main.xml activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Connect To Mysql Example" />
    <EditText
        android:id="@+id/txt_hn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="HN" >
    </EditText>
    <EditText
        android:id="@+id/txt_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Name-Lastname" />
    <EditText
        android:id="@+id/txt_age"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Age" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <Button
            android:id="@+id/btn_insert"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Insert" />
        <Button
            android:id="@+id/btn_select"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Select" />
        <Button
            android:id="@+id/btn_update"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Update" />
        <Button
            android:id="@+id/btn_delete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Delete" />
    </LinearLayout>
    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
            <TextView
                android:id="@+id/tv_res"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="" />
        </LinearLayout>
    </ScrollView>
</LinearLayout>

AndroidManifest.xml AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.example.testsql"
 android:versionCode="1"
 android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
 <uses-permission android:name="android.permission.INTERNET" />
<application
 android:icon="@drawable/ic_launcher"
 android:label="@string/app_name" >
 <activity
 android:name=".Main"
 android:label="@string/app_name" >
 <intent-filter>
 <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
 </activity>
 </application>
</manifest>

php_set_data.php php_set_data.php

<?php
header("content-type:text/javascript;charset=utf-8");
$con=mysql_connect('localhost','root','')or die(mysql_error());   // เปลี่ยน localhost เป็น ip ของ mysql server
mysql_select_db('android')or die(mysql_error());
mysql_query("SET NAMES UTF8");
if (isset($_POST)){
    if($_POST['isAdd']=='true'){
        $hn=$_POST['hn'];
        $name=$_POST['name'];
        $age = $_POST['age'];
        $date = date('Y-m-d');
        $sql="INSERT INTO `patient` (`hn`, `name`, `age`, `date_serv`) VALUES ('$hn', '$name', '$age', '$date')";
        mysql_query($sql);
    }
}
mysql_close();
?>

php_get_data.php php_get_data.php

<?php
header("content-type:text/javascript;charset=utf-8");
$con=mysql_connect('localhost','root','')or die(mysql_error());  // เปลี่ยน localhost เป็น ip ของ mysql server
mysql_select_db('android')or die(mysql_error());
mysql_query("SET NAMES UTF8");
$sql="SELECT * FROM patient";
$res=mysql_query($sql);
while($row=mysql_fetch_assoc($res)){
    $output[]=$row;
}
print(json_encode($output));
mysql_close();
?>

this is logcat 这是logcat 在此处输入图片说明

when start application it displayed message "Unfortunately Project Has Stopped" 启动应用程序时,它显示消息“不幸的是项目已停止”

Because you are not registering MainActivity Activity in AndroidManifest.xml Use .MainActivity instead of .Main to register MainActivity Activity in AndroidManifest.xml : 因为您没有在AndroidManifest.xml注册MainActivity活动,所以请使用.MainActivity而不是.MainAndroidManifest.xml注册MainActivity活动:

<activity
 android:name=".MainActivity"
 android:label="@string/app_name" >
  <!-- your code here  -->
 </activity>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM