2016-02-13 20 views
8

Bir uygulama oluşturmaya çalışıyorum, önceki bir etkinliğin bir girdisini yapıştırır (sorun olmadan çalışır) ve sonra bana bir veritabanından bazı şeyler gösterir (ButtonGet'e basıldığında). Sorun Projeyi çalıştırın çalıştığınızda ben Java.lang.IllegalStateException: Already attached elde edilmesi. Kodumdaki sorun nedir? senin onCreate yılındaJava.lang.IllegalStateException: Zaten ekli

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(); 
    } 
} 
+1

Daha önce bir kilitlenme görüyorsanız, sorgunuzu belirtirken yığın izlemeyi logcat'e yüklediğinizden emin olun. –

cevap

13

, sen super.onCreate aradığınız() iki kez ve ayrıca setContentView() iki kez. Eminim ki yapmak istediğin bu değil.

+0

Muhtemelen süper çağrı. SetContentView öğesini iki kez çağırmak tek bir işlevde anlamsızdır, ancak tamamen yasaldır. –

+0

super.onCreate çıkardıktan sonra, bu AppCompat geçerli tema özelliklerini desteklemez olsun. Teması – user3026270

+0

@ user3026270'e yüklediğim halde, şimdi kendi sorusu olan tamamen ilgisiz bir sorununuz varmış gibi geliyor. –

0

Sorun ilk olarak textView1'i başlatır ve düğmeyi tıklatırsınız; bu noktada, onCreate() yöntemini yeniden arayarak önceki ayarları sıfırlarsınız ve perfomClick yöntemleri getData() yöntemine ulaşmadan önce, burada da içeri girmeye çalışır. textView1'den gelen metni ancak ondan sonra onCreate'ı çağırdınız ve görünümü sıfırdan ayarlayın. Bu yüzden, işinizi bulamıyorsunuz, yinelenen kodu sil

+0

Şimdi anladım, java.lang.NullPointerException – user3026270

0

Lütfen logcat mesajını ve mümkünse DB dosyasını ekleyin. Bu sorun olası olabilir, Tabloda eklerken zaten atanan db nesnesiniyeniden atayabilirsiniz.

+0

Bu gerçekten bir yorum olmalı. – ig0774

+0

https://docs.google.com/document/d/1h4Ix0cwarGglggKK1HPZ_1syDO6Jk2hy01SW_Zwp7wg/edit?usp=sharing – user3026270

+0

Ben java.lang.NullPointerException – user3026270

İlgili konular