Android Android java onclick listener Problem

schnibli

Mitglied
Hallo zusammen,

Ich habe im Android Studio folgenden Code:
Code:
package bmu_access.com.bmuapp;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
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 java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by Roger on 11.03.2015.
 */
public class menu8_Fragment extends Fragment {
    View rootview;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        rootview = inflater.inflate(R.layout.menu8_layout, container, false);
        final EditText txt_monteur = (EditText)rootview.findViewById(R.id.txt_id_monteur_nr);
        final EditText txt_von = (EditText)rootview.findViewById(R.id.txt_von);
        final EditText txt_bis = (EditText)rootview.findViewById(R.id.txt_bis);
        final EditText txt_pause = (EditText)rootview.findViewById(R.id.txt_pause);
        final EditText txt_projekt = (EditText)rootview.findViewById(R.id.txt_projekt);
        final Button btn_speichern = (Button) rootview.findViewById(R.id.btn_speichern);
        System.out.println("working");
        btn_speichern.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("working2");
                String url = "http://url/einfügen.php";
                List params = new ArrayList();
                System.out.println("working3");
                params.add(new BasicNameValuePair("id_monteur", txt_monteur.getText().toString()));
                params.add(new BasicNameValuePair("datum", txt_von.getText().toString()));
                params.add(new BasicNameValuePair("arbeitsbeginn", txt_bis.getText().toString()));
                System.out.println("working4");
                @SuppressWarnings("unused")
                String resultServer  = getHttpPost(url,params);
                Toast.makeText(getActivity(), "1 Record inserted...", Toast.LENGTH_LONG).show();
                System.out.println("working5");
       }
});
        return rootview;
    }
    public String getHttpPost(String url,List params) {
        StringBuilder str = new StringBuilder();
        HttpClient client = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);
        try {
            httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
            HttpResponse response = client.execute(httpPost);
            StatusLine statusLine = response.getStatusLine();
            int statusCode = statusLine.getStatusCode();
            if (statusCode == 200) { // Status OK
                HttpEntity entity = response.getEntity();
                InputStream content = entity.getContent();
                BufferedReader reader = new BufferedReader(new InputStreamReader(content));
                String line;
                while ((line = reader.readLine()) != null) {
                    str.append(line);
                }
            } else {
                Log.e("Log", "Failed to download result..");
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str.toString();
    }
 }
Leider erscheint folgender Fehler nach Drücken des Buttons:
Code:
05-12 16:58:01.356 28512-28512/biu_lappses.com.biu_lappses I/System.out﹕ working4
05-12 16:58:01.536 28512-28512/biu_lappses.com.biu_lappses I/System.out﹕ Thread-1(ApacheHTTPLog):Reading from variable values from setDefaultValuesToVariables
05-12 16:58:01.561 28512-28512/biu_lappses.com.biu_lappses I/System.out﹕ Thread-1(ApacheHTTPLog):isShipBuild true
05-12 16:58:01.561 28512-28512/biu_lappses.com.biu_lappses I/System.out﹕ Thread-1(ApacheHTTPLog):SmartBonding Enabling is false, SHIP_BUILD is true, log to file is false, DBG is false
05-12 16:58:01.586 28512-28512/biu_lappses.com.biu_lappses D/dalvikvm﹕ GC_FOR_ALLOC freed 2385K, 23% free 10300K/13340K, paused 20ms, total 20ms
05-12 16:58:01.591 28512-28512/biu_lappses.com.biu_lappses I/System.out﹕ main calls detatch()
05-12 16:58:01.591 28512-28512/biu_lappses.com.biu_lappses D/AndroidRuntime﹕ Shutting down VM
05-12 16:58:01.591 28512-28512/biu_lappses.com.biu_lappses W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x4180ac08)
05-12 16:58:01.596 28512-28512/biu_lappses.com.biu_lappses E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: biu_lappses.com.biu_lappses, PID: 28512
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1166)
at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
at java.net.InetAddress.getAllByName(InetAddress.java:214)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:167)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:125)
at org.apache.http.impl.client.DefaultRequestDirector.executeOriginal(DefaultRequestDirector.java:1227)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:677)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:570)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:491)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:469)
at biu_lappses.com.bmuapp.menu8_Fragment.getHttpPost(menu8_Fragment.java:76)
at biu_lappses.com.bmuapp.menu8_Fragment$1.onClick(menu8_Fragment.java:60)
at android.view.View.performClick(View.java:4658)
at android.view.View$PerformClick.run(View.java:19461)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5694)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
Kann mir jemand Helfen?
 

Ch4t4r

Aktives Mitglied
android.os.NetworkOnMainThreadException

In Android sollten alle netzwerk-operationen in einem anderen thread laufen. Willst du das nicht, kannst du über die Klasse StrictMode eine eigende Policy über den ThreadPolicy.Builder() setzen, indem du einfach ohne weiteres build () aufrufst, was alle Operationen erlaubt.
 

schnibli

Mitglied
Hallo, ich bin am verzweifeln :s....
Was mache ich alles falsch:
Code:
    btn_speichern.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("working2");

                List params = new ArrayList();
                System.out.println("working3");
                params.add(new BasicNameValuePair("id_monteur", txt_monteur.getText().toString()));
                params.add(new BasicNameValuePair("datum", txt_von.getText().toString()));
                params.add(new BasicNameValuePair("arbeitsbeginn", txt_bis.getText().toString()));
                System.out.println("working4");


                Toast.makeText(stunden_eintragen.this, "1 Record inserted...", Toast.LENGTH_LONG).show();
                System.out.println("working5");

            }
        });


    }
    public class MyData
    {
        public String url;
        public List params;
    }

    ClientAsyncTask clientAST = new ClientAsyncTask();
    class ClientAsyncTask extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... params) {
            String result = null;
            String url = "http://link/einfuegen.php";
            StringBuilder str = new StringBuilder();
            HttpClient client = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);
            System.out.println("working6");
            try {
                httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
                HttpResponse response = client.execute(httpPost);
                StatusLine statusLine = response.getStatusLine();
                int statusCode = statusLine.getStatusCode();
                if (statusCode == 200) { // Status OK
                    HttpEntity entity = response.getEntity();
                    InputStream content = entity.getContent();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(content));
                    String line;
                    while ((line = reader.readLine()) != null) {
                        str.append(line);
                    }
                } else {
                    Log.e("Log", "Failed to download result..");
                    System.out.println("working7");
                }
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return result;
        }

        @Override

        protected void onPostExecute(String s) {
        }
    }

}

das (parms "UTF-8") wird mir rot angezeichnet :s
 

Ch4t4r

Aktives Mitglied
Wenn du deine Maus über dem rot unterstrichenem oder an dem roten x auf der linke Seite hältst, erscheint ein kleines Fenster mit deinem Fehler. In deinem Fall vermute ich, dass params (vom Type String[]) nicht wie gefordert (docs) von der Klasse iterable erben. Du musst eine Liste verweden.
 
Zuletzt bearbeitet:

schnibli

Mitglied
Hallo, vielen dank für deine Bemühung, leider bringt es mich nicht viel weiter.

Das der Fehler Beschrieben wird wusste ich schon und du hast auch vollkommen recht mit deiner Vermutung :s
 

schnibli

Mitglied
Ja wie du siehst weis ich nicht was ich deklarieren muss und wie ich es aufrufen muss damit es Funktioniert :s .....

Jeder Tipp währe Hilfreich. aber ich bitte um ein bisschen Respekt, bin noch nicht so erfahren mit Java Android ect
 

Ch4t4r

Aktives Mitglied
Ja wie du siehst weis ich nicht was ich deklarieren muss und wie ich es aufrufen muss damit es Funktioniert :s .....

Jeder Tipp währe Hilfreich. aber ich bitte um ein bisschen Respekt, bin noch nicht so erfahren mit Java Android ect

Kam ich dir respektlos rüber? ^^

Eine Art Erweiterung zu Arrays sind die Listen. Sie haben variable Größen und es kann ein Element an einer beliebigen Stelle gelöscht werden. Über
Code:
List<String> stringList = new ArrayList<String>();
definierst du eine Liste, die Strings speichert.

Laut den docs fordert die Klasse den Typ Iterable als Argument. Sehen wir uns die Javadocs (hier) an, sehen wir, dass alle Listen vom Typ Iterable sind. Anstatt also
Code:
httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
zu verwenden, da params ein Array ist, müssen wir es erst in einer Liste "verpacken". Ganz einfach geht das über Lists.asList(array), also in deinem Fall
Code:
httpPost.setEntity(new UrlEncodedFormEntity(Lists.asList(params), "UTF-8"));
 

schnibli

Mitglied
Ich habe es geschafft :) ...
Jedoch habe ich noch ein kleines Problem.
Einen oder mehrere Texte kann ich wie folgt weitergeben.
Code:
            new MyAsyncTask().execute(txt_id_monteur_nr.getText().toString(), txt_von.getText().toString(), txt_pause.getText().toString(), txt_bis.getText().toString(), txt_projekt.getText().toString(), txt_datum.getText().toString());

Nun würde ich zusätzlich noch einen Checkboxstatus weitergeben. Wie kann ich das bez. wie binde ich da noch ein Boolean wert ein :s?
 

Ch4t4r

Aktives Mitglied
Hierfür hast du zwei Möglichkeiten:

Entweder du wandelst den boolean in einen string (z.b mit "" + bool oder String.valueOf (bool)) um und castest (wandelst) ihn über Boolean.parseBoolean (string) wieder um

..oder du benutzt die Sichtbarkeit von variablen. Eine variable ist nur innehalb des Blocks (erkennbar durch { }) und seinen Unterblöcken sichtbar. Wenn du das weißt, kannst du eine variable im obersten block (public class name {...}) deklarieren, die von innerhalb der klasse (und seinen Unterklassen) immer erreichbar ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Netzwerk Verbindungen Java Android Android & Cross-Platform Mobile Apps 107
M Repository bei Room-Database in Android Studio (Java) Android & Cross-Platform Mobile Apps 2
T Android Android Augmented Faces in Java. Neue Landmarks erstellen Android & Cross-Platform Mobile Apps 1
ruutaiokwu Wie fügt man bei Android Studio .jar-Libraries zu einem Android-Java-Projekt hinzu? Android & Cross-Platform Mobile Apps 33
O Web API in Android (JAVA) einbinden Android & Cross-Platform Mobile Apps 3
T Bringen mir die Java-Basics irgendetwas für die Android-Programmierung Android & Cross-Platform Mobile Apps 4
T Fehler Android Studio: java.net.MalformedURLException: no protocol: http%3A%2F%2Fwww.mal ..... Android & Cross-Platform Mobile Apps 2
C Android Programmierung speziell oder einfach Java Buch kaufen? Android & Cross-Platform Mobile Apps 3
J Android Java Packet in Android Java ide hinzufügen. Android & Cross-Platform Mobile Apps 3
P Android App - Java Android & Cross-Platform Mobile Apps 1
T Android Android Sensor: Java Problem Android & Cross-Platform Mobile Apps 1
D Lib für (Desktop-)Java und Android schreiben Android & Cross-Platform Mobile Apps 7
W Java Editor für Android +Emulator Android & Cross-Platform Mobile Apps 7
M Android Switch-Klasse stoppt Android App / java.lang.NullPointerException Android & Cross-Platform Mobile Apps 5
L Mit Java ein Android Projekt kompilieren Android & Cross-Platform Mobile Apps 6
F Bei einer Android Java App, Objekte erstellen Android & Cross-Platform Mobile Apps 2
J Android-App-Programmierung - Ähnlich normaler Java-Programmierung? Android & Cross-Platform Mobile Apps 6
S Desktop Anwedung ( Java 6 ) auf android zu greifen. Android & Cross-Platform Mobile Apps 6
L Android Android über Java Code connecten? Android & Cross-Platform Mobile Apps 2
A Android SimpleDateFormat gibt für Date unter android anderes Datum zurück als in Std. Java Android & Cross-Platform Mobile Apps 2
S Android binäre Daten zwischen Android und einem Java-Server Android & Cross-Platform Mobile Apps 5
S Android Java, Android und Serializable Android & Cross-Platform Mobile Apps 3
H Mjpeg Code läuft unter Java jedoch nicht unter Android? Android & Cross-Platform Mobile Apps 11
W Android Crosswordliste Java<->Android Syntax Android & Cross-Platform Mobile Apps 5
H Android ANDROID SDK + JAVA SE Development Kit (JDK) Android & Cross-Platform Mobile Apps 4
W Android gleich Java? Android & Cross-Platform Mobile Apps 3
J Benachrichtigung Freigabe ab Android 14 Android & Cross-Platform Mobile Apps 1
J Android Benachrichtigung zum Zeitpunkt ers Android & Cross-Platform Mobile Apps 15
J Das Beispiel von Android erzeugt Fehler Android & Cross-Platform Mobile Apps 8
J Zeitdifferenzen unter Android 7 (API < 26) berechnen Android & Cross-Platform Mobile Apps 4
Z Android IntelliJ Android & Cross-Platform Mobile Apps 2
Android App auf das eigene Handy bekommen Android & Cross-Platform Mobile Apps 3
Alex IV Android App erstellen Android & Cross-Platform Mobile Apps 3
OnDemand CrossPlatform Kotlin iOs/Android Datenverbrauch Android & Cross-Platform Mobile Apps 2
W In Android Studio Integer an andere activities übergeben Android & Cross-Platform Mobile Apps 2
wladp Android Studio Room Database Android & Cross-Platform Mobile Apps 1
N "Schöne" Datatable in Android und setzen von Parametern von Textview im Code Android & Cross-Platform Mobile Apps 5
N Android game programmieren Android & Cross-Platform Mobile Apps 5
T Android Studio: Einen Button in einer For Schleife verwenden Android & Cross-Platform Mobile Apps 2
K BLE Komunikation mit Android studio und esp32 Android & Cross-Platform Mobile Apps 5
G Android UDP Kommunikation Android & Cross-Platform Mobile Apps 1
M Paper DB wird in Android Studio nicht erkannt Android & Cross-Platform Mobile Apps 7
J Android zugrif auf Thread nach Handy drehen. Android & Cross-Platform Mobile Apps 10
K Android Android In-App-Purchase lädt nicht Android & Cross-Platform Mobile Apps 0
Besset Android http request an interne ip adresse funktioniert nicht Android & Cross-Platform Mobile Apps 8
J Is Android Development Head First Outdated? Android & Cross-Platform Mobile Apps 3
J Android Android Datenbankverbindung zum Raspberry Pi Android & Cross-Platform Mobile Apps 1
lolcore Android Studio -Download Documentation for Android SDK Android & Cross-Platform Mobile Apps 0
S Sinnvollste weg eine SQLite DB mit Android auslesen Android & Cross-Platform Mobile Apps 7
W Problem mit Android Studio Android & Cross-Platform Mobile Apps 0
W App Abo Android Android & Cross-Platform Mobile Apps 10
OSchriever Android Android MediaPlayer bei Anruf stoppen/pausieren Android & Cross-Platform Mobile Apps 2
OSchriever Auf onClick-Listener reagieren und Parameter übergeben (Android Studio) Android & Cross-Platform Mobile Apps 4
W removeNetwork Android App mit Spendenaktion fürs Tierheim! Android & Cross-Platform Mobile Apps 1
T Android R.string.test+i Problem Android & Cross-Platform Mobile Apps 2
P undefinierbarer Fehler Android Android & Cross-Platform Mobile Apps 8
T Android ArrayList sortieren mit 2 Werten ohne thencomparing , Wie? Android & Cross-Platform Mobile Apps 10
W Variable überschreiben (Android Studio) Android & Cross-Platform Mobile Apps 2
ruutaiokwu Android Selbst entwickelter SMTP-Client läuft auf PC, nicht aber auf Android Android & Cross-Platform Mobile Apps 9
ruutaiokwu Android Warum muss man bei Android Studio immer 2x auf "Run" klicken damit die App auf dem Gerät startet Android & Cross-Platform Mobile Apps 8
ruutaiokwu Android Wo das 'android.useAndroidX' property hinzufügen? Android & Cross-Platform Mobile Apps 8
ruutaiokwu Android In einem Android-“Spinner”-Element GLEICHZEITIG Bild (links) UND Text (rechts) anzeigen Android & Cross-Platform Mobile Apps 0
P Login und Registrierung Android Anzeige Android & Cross-Platform Mobile Apps 7
S Von JavaFx zu Android Android & Cross-Platform Mobile Apps 12
K Android to Pi | Websocket Problem Android & Cross-Platform Mobile Apps 3
M Komponenten positionieren in Android Studio 3.6.3 Android & Cross-Platform Mobile Apps 1
M Android Studio - Property-Fenster einblenden Android & Cross-Platform Mobile Apps 1
M Android Studio - App auf dem Smartphone testen Android & Cross-Platform Mobile Apps 7
M Barrierefreie Appentwicklung für Android - Suche Codebeispiele Android & Cross-Platform Mobile Apps 8
M Android Studio - Configuration fehlt Android & Cross-Platform Mobile Apps 20
M Wo kann ich das Android SDK herunterladen / wie kann ich es installieren Android & Cross-Platform Mobile Apps 3
M Unsupported class file major version 57 - Fehlermeldung bei Android Studio Android & Cross-Platform Mobile Apps 27
ruutaiokwu Android Studio (SDK) ANDROID_SDK_ROOT-Variable? Android & Cross-Platform Mobile Apps 5
J Android Studio macht seltsame Sachen Android & Cross-Platform Mobile Apps 2
J Android 9.1 aber android Studio findet API22 Android & Cross-Platform Mobile Apps 0
Dimax Web-Seite in native app convertieren mit Android Studio Android & Cross-Platform Mobile Apps 8
A Android Studio: while-Schleife beginnt nicht Android & Cross-Platform Mobile Apps 5
lolcore android studio: fehler bei laden des emulators Android & Cross-Platform Mobile Apps 10
J Android App - Browser öffnen und Text eingeben/Button click auslösen Android & Cross-Platform Mobile Apps 10
A Android-Studio: 2. Layout nach kurzer Zeit aufzeigen Android & Cross-Platform Mobile Apps 2
A jpg wird im Android Studio nicht akzeptiert Android & Cross-Platform Mobile Apps 3
J Android Studio - ArrayList - Selected Item ermitteln Android & Cross-Platform Mobile Apps 13
T Android SDK-Manager startet nicht in Eclipse Android & Cross-Platform Mobile Apps 5
J Was soll das bedeuten ? does not require android.permission.BIND_JOB_SERVICE permission Android & Cross-Platform Mobile Apps 7
A Android Studio: ImageView verpixelt Android & Cross-Platform Mobile Apps 2
J intend Service im Android Studio Android & Cross-Platform Mobile Apps 4
L Android Android Development eventuell mit Flutter Android & Cross-Platform Mobile Apps 1
S Android Layout - welchen Typ? Android & Cross-Platform Mobile Apps 3
Arif Android Android Studio: Fehler beim Einbinden fremder Bibliothek? Android & Cross-Platform Mobile Apps 2
L Android Android Contacts DB auslesen Android & Cross-Platform Mobile Apps 1
A Android Studio - App mit Nearby Android & Cross-Platform Mobile Apps 1
L Android content URI Datei einlesen Android & Cross-Platform Mobile Apps 9
N Android Game Background Service Android & Cross-Platform Mobile Apps 11
Jackii Android Android Studio Error im Testlauf ohne zu programmieren Android & Cross-Platform Mobile Apps 9
B Android Probleme mit Android Studio Android & Cross-Platform Mobile Apps 6
Excess Android Service läuft nicht in Sandby weiter Android & Cross-Platform Mobile Apps 2
B Android Projekt für Android und IOS erstellen? Android & Cross-Platform Mobile Apps 5
J App funktioniert auf Android 5, auf 6 nicht Android & Cross-Platform Mobile Apps 2
J Android Snake Android & Cross-Platform Mobile Apps 15
J Android TaschenRechner Android & Cross-Platform Mobile Apps 22

Ähnliche Java Themen

Neue Themen


Oben