2016-04-22 7 views
0

Ich bin neu in Android-Programmierung, und ich versuche, den Text von zwei editText Feld von meiner Android App Himbeer-Pi mit PHP und JSON zu senden. Alles funktioniert gut und die Daten können in der Datenbank angezeigt werden, aber das einzige Problem ist, wenn ich auf die Schaltfläche SENDEN in meiner App klicken, tut es nichts. Aber wenn ich irgendwo in die Nähe der SEND-Taste klicke, werden die Daten gesendet. Ich habe die onClick-Methode aus der Layout-Datei verwendet, die in activity_main.xml definiert ist. Hier ist mein MainActivity.java Code:Button funktioniert nicht in meiner Android App wie erwartet

public class MainActivity extends AppCompatActivity { 

    private ProgressDialog pDialog; 

    JSONParser jsonParser = new JSONParser(); 

    EditText editText; 
    EditText editText2; 
    Button button; 
    private View view; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     editText = (EditText) findViewById(R.id.name); 
     editText2 = (EditText) findViewById(R.id.partNumber); 
     button = (Button) findViewById(R.id.send); 
    } 

    public void Send(View view) { 
     this.view = view; 
     new Create_Part().execute(); 
    } 

    class Create_Part extends AsyncTask<String, String, String> { 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(MainActivity.this); 
      pDialog.setMessage("Sending part to the database..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 

     @SuppressWarnings("WrongThread") 
     @Override 
     protected String doInBackground(String... args) { 
      String String_name = editText.getText().toString(); 
      String Int_Part = editText2.getText().toString(); 

      List<NameValuePair> params = new ArrayList<>(); 
      params.add(new BasicNameValuePair("Name", String_name)); 
      params.add(new BasicNameValuePair("part_nr", Int_Part)); 

      JSONObject json = jsonParser.makeHttpRequest("http://192.168.2.1/db_create.php", "POST", params); 

      try { 
       int success = json.getInt("success"); 

       if (success == 1) { 
        finish(); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     protected void onPostExecute(String file_url) { 
      pDialog.dismiss(); 
     } 
    } 
} 

Meine activity_main.xml Datei:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.dipankarroy.rpitoandroidmessengerapp.MainActivity" 
    android:onClick="Send" 
    android:nestedScrollingEnabled="false"> 

    <EditText 
     android:id="@+id/name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     android:hint="@string/name" /> 

    <EditText 
     android:id="@+id/partNumber" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignEnd="@+id/name" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignRight="@+id/name" 
     android:layout_below="@+id/name" 
     android:hint="@string/part_number" /> 

    <Button 
     android:id="@+id/send" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/partNumber" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="36dp" 
     android:text="@string/send" 
     android:onClick="Send" /> 
</RelativeLayout> 
+0

zuerst entfernen privat Ansicht ansehen; diese Zeile – Pavya

+0

Wo ist der 'onClickListener' für die Schaltfläche? –

+0

Angenommen onclick property map Sende Methode. Teilen Sie Ihr activity_main Layout – alrama

Antwort

0

Sie benötigen einen Klick Zuhörer für die Schaltfläche registrieren:

button.setOnClickListener(this); 

Dann View.OnClickListener auf Ihre Aktivität implementieren:

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 
    @Override public void onClick(View v) { 
    new Create_Part().execute(); 
    } 
} 
+0

Dies zeigt, dass Methodenaufruf die Warnung java.lang.NullPointerException auslösen kann – Vibhor

-1

Sie können diese mögen -

button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) {    

       new Create_Part().execute();     

      } 
     } 
    }); 

Hoffe, es wird Ihnen helfen.

0

Entfernen Sie android:onClick="Send" von Ihrer Wurzel RelativeLayout. Wenn Sie irgendwo anders als auf Ihre Schaltfläche klicken, klicken Sie in Ihrer Aktivität tatsächlich auf das Stammlayout und die Methode Send(View view).

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.dipankarroy.rpitoandroidmessengerapp.MainActivity" 
android:nestedScrollingEnabled="false"> 
Verwandte Themen