Keine resource identifier gefunden, für das Attribut 'onClick' im Paket 'android'

Ich bin mit dem folgenden Fehler, wenn ich versuche zu laufen, meinen code.

Ich gegoogelt es aus. Viele haben darüber gesprochen, über die onclick-Methode notbeing funktional für API<=3. Ich geprüft meine API-Ebene.Es ist 17.

Wie bekomme ich über das ausführen meines Codes.

Wenn nötig kann ich nach meiner MainActivity.java code herauszufinden.

hier ist der code

package com.example.myfirstapp;




import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

public class MainActivity extends Activity {

private Button btn;
private EditText edit;
private Spinner spinner;
private TextView textView;

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

    btn = (Button) findViewById(R.id.button);
    edit = (EditText) findViewById(R.id.edit_message);
    spinner = (Spinner) findViewById(R.id.spinner);
    textView = (TextView) findViewById(R.id.textView1);

    btn.setOnClickListener(
            new View.OnClickListener()
            {
                public void onClick(View view)
                {
                    //Log.v("EditText", edit.getText().toString());
                    //Log.v("Spinner", spinner.getSelectedItem().toString());
                    String url="http://js-server.xxx.edu:23405/examples/servlet/HelloWorldExample?title="+edit.getText().toString()+"&type="+spinner.getSelectedItem().toString();
                    Log.v("url",url);
                }
            });



ArrayAdapter<CharSequence> adapter =      ArrayAdapter.createFromResource(this,R.array.title_type,android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

  //String url="http://js-server.xxx.edu:23405/examples/servlet/HelloWorldExample?title="+edit.getText().toString()+"&type="+spinner.getSelectedItem().toString();
 //Log.v("url",url);

 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        //Object item = parent.getItemAtPosition(pos);

    }
    public void onNothingSelected(AdapterView<?> parent) {
    }
});


}

private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... urls) {
      String response = "";
      for (String url : urls) {
        DefaultHttpClient client = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(url);
        try {
          HttpResponse execute = client.execute(httpGet);
          InputStream content = execute.getEntity().getContent();

          BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
          String s = "";
          while ((s = buffer.readLine()) != null) {
            response += s;
          }

        } catch (Exception e) {
          e.printStackTrace();
        }
      }
      return response;
    }

    @Override
    protected void onPostExecute(String result) {
      textView.setText(result);
    }
  }

  public void readWebpage(View view) {
    DownloadWebPageTask task = new DownloadWebPageTask();
    task.execute(new String[] { "http://js-server.xxx.edu:23405/examples/servlet/HelloWorldExample?title="+edit.getText().toString()+"&type="+spinner.getSelectedItem().toString() });

  }
} 

Alles was ich versuche zu tun, ist zu Holen, die JSON-Daten vom server zurückgegeben werden. Dann brauche ich zum Parsen der JSON-Daten in form einer tabellarischen format. Ich bin nicht auf dieses Teil, aber immer noch fest auf das abrufen von JSON-Daten von meinem server.

Meine XML-Datei ist:

<LinearLayout 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:orientation="vertical" >

<EditText
    android:id="@+id/edit_message"
    android:layout_width="298dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="37dp"
    android:ems="10"
    android:hint="@string/edit_message" />

<Spinner
    android:id="@+id/spinner"
    android:layout_width="304dp"
    android:layout_height="45dp" />

<Button
    android:id="@+id/button"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="106dp"
    android:layout_height="wrap_content"
    android:onclick="readWebpage"
    android:text="@string/button_send" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="Example Text" />

</LinearLayout>
  • Bitte poste deinen code. Auch ist es generell eine schlechte Idee, onClick im XML. Registrieren Sie ein OnClickListener statt.,
  • "...es ist generell eine schlechte Idee, onClick im XML"." Was ist Ihre Logik hinter dieser Aussage?
  • es ist weniger haltbar. Es ist ähnlich wie mit onClick in javascript, es ist nicht explizit falsch, es ist nur keine gute Praxis.
  • Ja, Sie müssen veröffentlichen Sie Ihren code, denn es funktioniert. onClick über XML arbeitet mit Java-reflection, gibt es keinen Unterschied (sehr klein), so ist es gut, es zu benutzen UPD: Stimme zu, es ist nicht sicher, leichter zu brechen, einen code, weil keine starke Referenz an die Methode
  • DISCLAIMER: Der obige Kommentar ist eine Gutachten, basierend auf 4 Jahre Android Erfahrung.
  • Jungs..ich habe den code oben. auch bitte lassen Sie mich wissen, Wenn ich den code ändern, um die JSON-Daten. ich denke, dass theres keine Notwendigkeit, noch anycase?
  • Ist Ihr XML-Attribut android:onClick="readWebpage"?
  • ja, es ist android:onclick="readWebpage"
  • ich habe mein code für die XML-Datei auch (gerade jetzt)
  • Was ist Ihr Mindest-API in Ihrem manifest?
  • ich habe diese android:minSdkVersion="8" android:targetSdkVersion="16" in meine AndroidManifest.xml Datei
  • Ich bin mit Ihnen zu diesem, jedoch die Einführungs-tutorial in Android-Seite steht es so. Natürlich ist es nur ein tutorial, aber Sie sollten stress, schlechte Praktiken, die, wenn Sie gelten, Sie nur für die Demo und Einfachheit. Im Allgemeinen bin ich unglücklich mit allen Android-Ressourcen, die ich bisher getroffen habe. Scheint stackoverflow meine einzige anständige tutor von nun an.

InformationsquelleAutor PSN | 2012-11-28
Schreibe einen Kommentar