web-dev-qa-db-fra.com

Java.lang.IllegalStateException: déjà attaché

J'essaie de créer une application, qui colle une entrée d'une activité précédente (fonctionne sans problème), puis me montre des éléments d'une base de données (lorsque ButtonGet est enfoncé). Le problème est que lorsque j'essaie d'exécuter le projet, j'obtiens Java.lang.IllegalStateException: Already attached. Quel est le problème avec mon code?

 package br.exemplozxingintegration;

 import Android.annotation.SuppressLint;
 import Android.app.ProgressDialog;
 import Android.content.ClipData;
 import Android.content.ClipboardManager;
 import Android.os.Bundle;
 import Android.support.v7.app.AppCompatActivity;
 import Android.view.View;
 import Android.widget.Button;
 import Android.widget.EditText;
 import Android.widget.TextView;
 import Android.widget.Toast;

 import com.Android.volley.RequestQueue;
 import com.Android.volley.Response;
 import com.Android.volley.VolleyError;
 import com.Android.volley.toolbox.StringRequest;
 import com.Android.volley.toolbox.Volley;

 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;



 public class SecondActivity extends AppCompatActivity implements View.OnClickListener  {



     private EditText  pastetext;
     private ClipboardManager myClipboard;
     private ClipData myClip;
     private Button btn;
     private EditText textView1;
     private Button buttonGet;
     private TextView textViewResult;

     private ProgressDialog loading;


           @Override
           protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               setContentView(R.layout.activity_second);
               myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
               pastetext = (EditText) findViewById(R.id.textView1);
               btn = (Button)findViewById(R.id.buttonPaste);
               btn.performClick();
               super.onCreate(savedInstanceState);
               setContentView(R.layout.activity_main);

               textView1 = (EditText) findViewById(R.id.textView1);
               buttonGet = (Button) findViewById(R.id.buttonGet);
               textViewResult = (TextView) findViewById(R.id.textViewResult);

               buttonGet.setOnClickListener(this);

           }



           @SuppressLint("NewApi")
           public void paste(View view) {
               ClipData cp = myClipboard.getPrimaryClip();
               ClipData.Item item = cp.getItemAt(0);
               String text = item.getText().toString();
               pastetext.setText(text);
               Toast.makeText(getApplicationContext(), "Text Pasted",
                       Toast.LENGTH_SHORT).show();


           }


     private void getData() {
         String id = textView1.getText().toString().trim();
         if (id.equals("")) {
             Toast.makeText(this, "", Toast.LENGTH_LONG).show();
             return;
         }
         loading = ProgressDialog.show(this,"Please wait...","Fetching...",false,false);

         String url = Config.DATA_URL+textView1.getText().toString().trim();

         StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
             @Override
             public void onResponse(String response) {
                 loading.dismiss();
                 showJSON(response);
             }
         },
                 new Response.ErrorListener() {
                     @Override
                     public void onErrorResponse(VolleyError error) {
                         Toast.makeText(SecondActivity.this,error.getMessage().toString(),Toast.LENGTH_LONG).show();
                     }
                 });

         RequestQueue requestQueue = Volley.newRequestQueue(this);
         requestQueue.add(stringRequest);
     }

     private void showJSON(String response){
         String name="";
         String image = "";
         try {
             JSONObject jsonObject = new JSONObject(response);
             JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY);
             JSONObject collegeData = result.getJSONObject(0);
             name = collegeData.getString(Config.KEY_NAME);
             image = collegeData.getString(Config.KEY_IMAGE);
         } catch (JSONException e) {
             e.printStackTrace();
         }
         textViewResult.setText("Name:\t"+name+"\nImagine :\t"+ image);
     }

     @Override
     public void onClick(View v) {
         getData();
     }
 }
12
user3026270

Dans votre onCreate, vous appelez super.onCreate () deux fois, ainsi que setContentView () deux fois. Je suis à peu près sûr que ce n'est pas ce que tu veux faire.

30
Doug Stevenson

Le problème est que vous initialisez textView1 pour la première fois et que vous cliquez sur le bouton. À ce stade, vous réinitialisez simplement les paramètres précédents en appelant à nouveau onCreate (). mais vous avez ensuite appelé onCreate et défini la vue à partir de zéro. C'est pourquoi vous ne pouvez pas le faire fonctionner, supprimez le code en double

0
user5812699

Veuillez joindre le message logcat et, si possible, le fichier de base de données. Cela pourrait être le problème, vous pourriez être réaffecter l'objet de base de données déjà affecté lors de l'insertion dans la table.

0
Chintan Desai