2016-08-10 18 views
5

Pracuję nad aplikacją. W tym używam listview. Kiedy klikam element listy, powinien przejść do następnej aktywności, np. ProfileActivity2.java. Działa to dobrze, ale w tym ProfilAktywistyka2 znajduje się przycisk na dole, a kiedy klikam ten przycisk, moja aplikacja ulega awarii i zatrzymuje się na stronie listy. I pokazuje błąd java.lang.Throwable: setStateLocked w pliku układu listy, np. SetContentView. Jak rozwiązać ten błąd?Jak rozwiązać błąd jak java.lang.Throwable: setStateLocked?

//ProfileActivity2.java 

    public class ProfileActivity2 extends AppCompatActivity { 

     //Textview to show currently logged in user 
     private TextView textView; 
     private boolean loggedIn = false; 
     Button btn; 
     EditText edname,edaddress; 

     TextView tvsname, tvsprice; 
     NumberPicker numberPicker; 
     TextView textview1,textview2; 
     Integer temp; 
     String pname, paddress, email, sname, sprice; 


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

      //Initializing textview 
      textView = (TextView) findViewById(R.id.textView); 
      edname=(EditText)findViewById(R.id.ed_pname); 
      edaddress=(EditText)findViewById(R.id.ed_add); 
      tvsname=(TextView)findViewById(R.id.textView_name); 
      tvsprice=(TextView)findViewById(R.id.textView2_price); 
      btn=(Button)findViewById(R.id.button); 

      Intent i = getIntent(); 
      // getting attached intent data 
      String name = i.getStringExtra("sname"); 
      // displaying selected product name 
      tvsname.setText(name); 

      String price = i.getStringExtra("sprice"); 
      // displaying selected product name 
      tvsprice.setText(price); 

      numberPicker = (NumberPicker)findViewById(R.id.numberpicker); 

      numberPicker.setMinValue(0); 
      numberPicker.setMaxValue(4); 
      final int foo = Integer.parseInt(price); 
      textview1 = (TextView)findViewById(R.id.textView1_amount); 
      textview2 = (TextView)findViewById(R.id.textView_seats); 

      // numberPicker.setValue(foo); 

      numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { 
       @Override 
       public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 

        temp = newVal * foo; 
       // textview1.setText("Selected Amount : " + temp); 
       // textview2.setText("Selected Seats : " + newVal); 
         textview1.setText(String.valueOf(temp)); 
         textview2.setText(String.valueOf(newVal)); 
       //  textview1.setText(temp); 
       //  textview2.setText(newVal); 

       } 
      }); 

      //Fetching email from shared preferences 

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

       // submitForm(); 
       // Intent intent = new Intent(ProfileActivity2.this, SpinnerActivity.class); 
       // startActivity(intent); 

        SharedPreferences sharedPreferences = getSharedPreferences(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE); 
        loggedIn = sharedPreferences.getBoolean(Config.LOGGEDIN_SHARED_PREF, false); 
        String email = sharedPreferences.getString(Config.EMAIL_SHARED_PREF, "Not Available"); 
        textView.setText(email); 

        if(loggedIn){ 

         submitForm(); 

         Intent intent = new Intent(ProfileActivity2.this, SpinnerActivity.class); 
         startActivity(intent); 
        } 
       } 
      }); 

     } 

     private void submitForm() { 
      // Submit your form here. your form is valid 
      //Toast.makeText(this, "Submitting form...", Toast.LENGTH_LONG).show(); 

      String pname = edname.getText().toString(); 
      String paddress = edaddress.getText().toString(); 
      String sname = textview1.getText().toString(); 
     // String sname= String.valueOf(textview1.getText().toString()); 
      String sprice= textview2.getText().toString(); 
     // String sprice= String.valueOf(textview2.getText().toString()); 
      String email= textView.getText().toString(); 

      Toast.makeText(this, "Signing up...", Toast.LENGTH_SHORT).show(); 
      new SignupActivity(this).execute(pname,paddress,sname,sprice,email); 

     } 
    } 

    //SignupActivity 

    public class SignupActivity extends AsyncTask<String, Void, String> { 

     private Context context; 
     Boolean error, success; 

     public SignupActivity(Context context) { 
      this.context = context; 
     } 

     protected void onPreExecute() { 

     } 

     @Override 
     protected String doInBackground(String... arg0) { 
      String pname = arg0[0]; 
      String paddress = arg0[1]; 
      String sname = arg0[2]; 
      String sprice = arg0[3]; 
      String email = arg0[4]; 

      String link; 
      String data; 
      BufferedReader bufferedReader; 
      String result; 

      try { 
       data = "?pname=" + URLEncoder.encode(pname, "UTF-8"); 
       data += "&paddress=" + URLEncoder.encode(paddress, "UTF-8"); 
       data += "&sname=" + URLEncoder.encode(sname, "UTF-8"); 
       data += "&sprice=" + URLEncoder.encode(sprice, "UTF-8"); 
       data += "&email=" + URLEncoder.encode(email, "UTF-8"); 

       link = "http://example.in/Spinner/update.php" + data; 

       URL url = new URL(link); 
       HttpURLConnection con = (HttpURLConnection) url.openConnection(); 

       bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream())); 
       result = bufferedReader.readLine(); 
       return result; 

      } catch (Exception e) { 
       // return new String("Exception: " + e.getMessage()); 
       // return null; 
      } 

      return null; 
     } 


     @Override 
     protected void onPostExecute(String result) { 

      String jsonStr = result; 
      Log.e("TAG", jsonStr); 

      if (jsonStr != null) { 
       try { 
        JSONObject jsonObj = new JSONObject(jsonStr); 
        String query_result = jsonObj.getString("query_result"); 
        if (query_result.equals("SUCCESS")) { 
         Toast.makeText(context, "Success! Your are Now MangoAir User.", Toast.LENGTH_LONG).show(); 

        } else if (query_result.equals("FAILURE")) { 
         Toast.makeText(context, "Looks Like you already have Account with US.", Toast.LENGTH_LONG).show(); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
        // Toast.makeText(context, "Error parsing JSON Please data Fill all the records.", Toast.LENGTH_SHORT).show(); 
        // Toast.makeText(context, "Please LogIn", Toast.LENGTH_SHORT).show(); 
        Toast.makeText(context, "Please Login", Toast.LENGTH_LONG).show(); 

       } 
      } else { 
       Toast.makeText(context, "Grrr! Check your Internet Connection.", Toast.LENGTH_SHORT).show(); 
      } 
     } 

    } 


    //List_Search 

    public class List_Search extends AppCompatActivity { 

     JSONObject jsonobject; 
     JSONArray jsonarray; 
     ListView listview; 
     ListViewAdapter adapter; 
     ProgressDialog mProgressDialog; 
     ArrayList<HashMap<String, String>> arraylist; 
     static String SNAME = "sname"; 
     static String SPRICE = "sprice"; 
     Context ctx = this; 


     @Override 
     public void onCreate(Bundle savedInstanceState){ 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.list_search); 
      new DownloadJSON().execute(); 
     } 

     // DownloadJSON AsyncTask 
     private class DownloadJSON extends AsyncTask<Void, Void, Void> { 

      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       // Create a progressdialog 
       mProgressDialog = new ProgressDialog(List_Search.this); 
       // Set progressdialog title 
       mProgressDialog.setTitle("Android JSON Parse Tutorial"); 
       // Set progressdialog message 
       mProgressDialog.setMessage("Loading..."); 
       mProgressDialog.setIndeterminate(false); 
       // Show progressdialog 
       mProgressDialog.show(); 
      } 

      @Override 
      protected Void doInBackground(Void... params) { 
       // Create an array 
       arraylist = new ArrayList<HashMap<String, String>>(); 
       // Retrieve JSON Objects from the given URL address 
       jsonobject = JSONfunctions 
         .getJSONfromURL("http://example.in/MangoAir_User/mangoair_reg/ListView1.php"); 

       try { 
        // Locate the array name in JSON 
        jsonarray = jsonobject.getJSONArray("result"); 

        for (int i = 0; i < jsonarray.length(); i++) { 
         HashMap<String, String> map = new HashMap<String, String>(); 
         jsonobject = jsonarray.getJSONObject(i); 
         // Retrive JSON Objects 
         map.put("sname", jsonobject.getString("sname")); 
         map.put("sprice", jsonobject.getString("sprice")); 
         // Set the JSON Objects into the array 
         arraylist.add(map); 
        } 
       } catch (JSONException e) { 
        Log.e("Error", e.getMessage()); 
        e.printStackTrace(); 
       } 
       return null; 
      } 

      @Override 
      protected void onPostExecute(Void args) { 
       // Locate the listview in listview_main.xml 
       listview = (ListView) findViewById(R.id.listView_search); 
       // Pass the results into ListViewAdapter.java 
       // adapter = new ListViewAdapter(List_Search.this, arraylist); 
       adapter = new ListViewAdapter(ctx, arraylist); 
       // Set the adapter to the ListView 
       listview.setAdapter(adapter); 
       // Close the progressdialog 
       mProgressDialog.dismiss(); 
      } 
     } 
    } 

    //ListViewAdapter 


    public class ListViewAdapter extends BaseAdapter { 
     // Declare Variables 
     Context context; 
     LayoutInflater inflater; 
     private boolean loggedIn = false; 
     ArrayList<HashMap<String, String>> data; 

     HashMap<String, String> resultp = new HashMap<String, String>(); 

     public ListViewAdapter(Context context, 
           ArrayList<HashMap<String, String>> arraylist) { 
      this.context = context; 
      data = arraylist; 

     } 

     @Override 
     public int getCount() { 
      return data.size(); 
     } 

     @Override 
     public Object getItem(int position) { 
      return null; 
     } 

     @Override 
     public long getItemId(int position) { 
      return 0; 
     } 

     public View getView(final int position, View convertView, ViewGroup parent) { 
      // Declare Variables 
      TextView name,price; 
      Button btn; 

      inflater = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      View itemView = inflater.inflate(R.layout.search_item, parent, false); 
      // Get the position 
      resultp = data.get(position); 

      // Locate the TextViews in listview_item.xml 
      name = (TextView) itemView.findViewById(R.id.textView8_sellernm); 
      // Capture position and set results to the TextViews 
      name.setText(resultp.get(List_Search.SNAME)); 

      price = (TextView) itemView.findViewById(R.id.textView19_bprice); 
      // Capture position and set results to the TextViews 
      price.setText(resultp.get(List_Search.SPRICE)); 


      btn=(Button)itemView.findViewById(R.id.button3_book); 
      btn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        resultp = data.get(position); 
        Intent intent = new Intent(context, ProfileActivity2.class); 
        // Pass all data rank 
        intent.putExtra("sname", resultp.get(List_Search.SNAME)); 
        intent.putExtra("sprice", resultp.get(List_Search.SPRICE)); 
        context.startActivity(intent); 

       } 
      }); 

      return itemView; 
     } 
    } 
+0

Wklej swój błąd. –

+0

08-10 10: 55: 21.837 23735-23735/com.example.user.sessiondemo D/AccessibilityManager: setStateLocked: wasEnabled = false, mIsEnabled = true, wasTouchExplorationEnabled = false, mIsTouchExplorationEnabled = false, wasHighTextContrastEnabled = false, mIsHighTextContrastEnabled = false java.lang.Throwable: setStateLocked – rohiH

+0

na com.example.user.sessiondemo.List_Search.onCreate (List_Search.java:37) – rohiH

Odpowiedz

3
context.startActivity(intent); 

Myślę, że błąd jest na tej linii wewnątrz btn.setOnClickListener bloku getview wystarczy użyć startActivity(intent);

Powiązane problemy