简体   繁体   中英

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"

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

<?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

<?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
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
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 在此处输入图片说明

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 :

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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