2017-02-18 3 views
1

Пожалуйста, помогите,строковая переменная = значение (строка), но результат является ложным

whay результат if(Title.toString().trim() == "camera") является false?
мой код:

mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       //Get item at position 
       GridMenuItem item = (GridMenuItem) parent.getItemAtPosition(position); 
       String Title =item.getTitle(); 
       if(Title.toString().trim() == "camera"){ 

        String strPhoneNumber; 
        Bundle b = getIntent().getExtras(); 
        strPhoneNumber = b.getString("phonenumber"); 

        Intent myIntent = new Intent(v.getContext(), UploadActivity.class); 
        Bundle bs = new Bundle(); 
        bs.putString("phonenumber", strPhoneNumber); //Your id 
        myIntent.putExtras(b); //Put your id to your next Intent 
        startActivityForResult(myIntent, 0); 
        finish(); 
       } 
       if(Title.toString() =="history"){ 
        Intent myIntent = new Intent(v.getContext(), HistoryActivity.class); 
        startActivityForResult(myIntent, 0); 
       } 
       if(Title.toString() =="setting"){ 
        Intent myIntent = new Intent(v.getContext(), HistoryActivity.class); 
        startActivityForResult(myIntent, 0); 
       } 

      } 
     }); 

debug

+2

Возможные дубликат [Как сравнить строки в Java?] (Http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – Henry

+0

@Henry использует метод 'String.equals (String params)'. http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#equals(java.lang.Object) – Distjoy

+0

@Henry, много спасибо, это работа –

ответ

1

Измените код следующим образом:

mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       //Get item at position 
       GridMenuItem item = (GridMenuItem) parent.getItemAtPosition(position); 
       String Title =item.getTitle().toString().trim(); 
       Log.d("testString",Title); 
       if(Title.equals("camera")){ 

        String strPhoneNumber; 
        Bundle b = getIntent().getExtras(); 
        strPhoneNumber = b.getString("phonenumber"); 

        Intent myIntent = new Intent(v.getContext(), UploadActivity.class); 
        Bundle bs = new Bundle(); 
        bs.putString("phonenumber", strPhoneNumber); //Your id 
        myIntent.putExtras(b); //Put your id to your next Intent 
        startActivityForResult(myIntent, 0); 
        finish(); 
       } 
       if(Title.equals("history")){ 
        Intent myIntent = new Intent(v.getContext(), HistoryActivity.class); 
        startActivityForResult(myIntent, 0); 
       } 
       if(Title.equals("setting")){ 
        Intent myIntent = new Intent(v.getContext(), HistoryActivity.class); 
        startActivityForResult(myIntent, 0); 
       } 

      } 
     }); 

В приведенном ниже комментарии укажите значение log "testString". Посмотрите, показывает ли это «Камера» вместо «камеры», затем соответствующим образом измените заявление if.

+1

много спасибо, это работа –

0

Попробуйте

Title.equals ("camera") 

Поскольку название является строкой, нет необходимости в использовании ToString и отделка

+0

много спасибо, это работа –

0

if(Title.toString().equal("camera"))

Поскольку в Java, String является тип объекта (Reference), поэтому вы должны использовать равное вместо ==.

«==» оператор использует для примитивных типов только (как межд, долго ...)

+0

много спасибо, это работа –