Почему не срабатывает сравнивание строк?

Здравствуйте уважаемые хабрчане.

Постигаю азы Java и программирования под Андроид.

Столкнул с очень интересной проблемой.


Делаю следующее — с помощью XmlPullParser парсю XML документ, проходя по всем эллементам, так как эллементов много, мне нужно делать сравнение названия эллементов. Так вот, читая xml заношу названия тегов в переменную, и сравниваю например:

if(tag=="v"){
						System.out.println("Ура");
					}



Но сравнение не срабатывает хоть убей.

Вывел в лог эту переменную, что бы посмотреть что в ней, и удивился, там именно v

Log.d(LOG_TAG, "TAG_NAME: " + tag);
if(tag=="v"){
						System.out.println("Ура");
					}



Так вот вопрос, почему не срабатывает сравнение никак понять не могу.

Сравнение не срабатывает ни с названием тегов, ни с названием аттрибутов, вообще!


Помогите пожалуйста!


Ниже привожу весь код.

public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		et=(EditText) findViewById(R.id.editText1);
		// находим список
		ListView lvMain = (ListView) findViewById(R.id.lvMain);
		
		String tmp = "";
		
		

		try {
			XmlPullParser xpp = prepareXpp();

			while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {

				switch (xpp.getEventType()) {
				// начало документа
				case XmlPullParser.START_DOCUMENT:
					Log.d(LOG_TAG, "START_DOCUMENT");
					break;
				// начало тэга
				case XmlPullParser.START_TAG:
					
					tag=xpp.getName();
					tag=tag.trim();
					et.setText(tag);
					
					
					tmp = "";
					System.out.println(tag);
					if(tag=="v"){
						System.out.println("Ура");
					}
					for (int i = 0; i < xpp.getAttributeCount(); i++) {
						name=xpp.getAttributeValue(i);
					}

					if (!TextUtils.isEmpty(tmp))
						Log.d(LOG_TAG, "Attributes: " + tmp);
					break;
				// конец тэга
				case XmlPullParser.END_TAG:
					Log.d(LOG_TAG, "END_TAG: name = " + xpp.getName());
					name="";
					istitle = false;
					break;
				// содержимое тэга
				case XmlPullParser.TEXT:
					if (tag=="v") {
						output.add(xpp.getText());
					}else{
						Log.d(LOG_TAG, "TAG_NAME: " + tag);
					}
					
					break;

				default:
					break;
				}
				// следующий элемент
				xpp.next();
			}
			Log.d(LOG_TAG, "END_DOCUMENT");

		} catch (XmlPullParserException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_1, output);

		// присваиваем адаптер списку
		lvMain.setAdapter(adapter);
	}

	XmlPullParser prepareXpp() {
		return getResources().getXml(R.xml.data);
	}



ну и собственно сам xml файл:

<?xml version="1.0" encoding="utf-8"?>
<server xmlns:f="http://www.mysite.ru" >
    <call-r>
        <f:getProjects u="1" >
            <v-r>
                <v>
                    <v k="id" >1176004</v>
                    <v k="name" >какое то описание</v>

                    <v k="descr" ></v>
                    <v k="category" >2</v>

                    <v k="subcategory" >27</v>
                    <v k="city" ></v>
                    <v k="country" ></v>
                    <v k="cost" >50</v>
                    <v k="kind" >1</v>
                    <v k="offers_count" >5</v>
                    <v k="pro_only" >1</v>
                    <v k="post_date" >1338210266</v>
                    <v k="currency" >0</v>
                    <v k="logo" ></v>
                    <v k="is_pro" >0</v>
                    <v k="priceby" >4</v>
                    <v k="prefer_sbr" >0</v>
                </v>
                <v>
                    <v k="id" >1176004</v>
                    <v k="name" >какое то описание</v>

                    <v k="descr" ></v>
                    <v k="category" >2</v>

                    <v k="subcategory" >27</v>
                    <v k="city" ></v>
                    <v k="country" ></v>
                    <v k="cost" >50</v>
                    <v k="kind" >1</v>
                    <v k="offers_count" >5</v>
                    <v k="pro_only" >1</v>
                    <v k="post_date" >1338210266</v>
                    <v k="currency" >0</v>
                    <v k="logo" ></v>
                    <v k="is_pro" >0</v>
                    <v k="priceby" >4</v>
                    <v k="prefer_sbr" >0</v>
                </v>
            </v-r>
        </f:getProjects>
        <f:getProjects u="2" >
            <v-r>
                <v>
                    <v k="id" >1176004</v>
                    <v k="name" >какое то описание</v>

                    <v k="descr" ></v>
                    <v k="category" >2</v>

                    <v k="subcategory" >27</v>
                    <v k="city" ></v>
                    <v k="country" ></v>
                    <v k="cost" >50</v>
                    <v k="kind" >1</v>
                    <v k="offers_count" >5</v>
                    <v k="pro_only" >1</v>
                    <v k="post_date" >1338210266</v>
                    <v k="currency" >0</v>
                    <v k="logo" ></v>
                    <v k="is_pro" >0</v>
                    <v k="priceby" >4</v>
                    <v k="prefer_sbr" >0</v>
                </v>
                <v>
                    <v k="id" >1176004</v>
                    <v k="name" >какое то описание</v>

                    <v k="descr" > </v>
                    <v k="category" >2</v>

                    <v k="subcategory" >27</v>
                    <v k="city" ></v>
                    <v k="country" ></v>
                    <v k="cost" >50</v>
                    <v k="kind" >1</v>
                    <v k="offers_count" >5</v>
                    <v k="pro_only" >1</v>
                    <v k="post_date" >1338210266</v>
                    <v k="currency" >0</v>
                    <v k="logo" ></v>
                    <v k="is_pro" >0</v>
                    <v k="priceby" >4</v>
                    <v k="prefer_sbr" >0</v>
                </v>
            </v-r>
        </f:getProjects>

        <f:getMessFolders>
            <v-r>
                <v>
                    <v k="id" >24905</v>
                    <v k="fname" >offtop</v>
                </v>
            </v-r>
        </f:getMessFolders>
    </call-r>

</server>



Буду примного благодарен за помощь. Просто я совсем в недоумении почему не сравниваются строки, ведь и там и там v


Может я где то ступил? Все таки конец рабочего дня?! Если так то скажите пожалуйста где?

P.S. Да, выше приведен говнокод, не обращайте на это внимание, это тестовый проект, притираюсь с Java и Android


Заранее благодарен всем!
  • Вопрос задан
  • 9614 просмотров
Решения вопроса 1
dewen
@dewen
если tag Строка то:

tag==«v» — Это сравнение ссылок на объекты

tag.equals(«v») — Это сравнение строк
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
0leGG
@0leGG
В дополнение к высказавшимся выше скажу, что в случае Android лучше использовать метод TextUtils.equals(), в таком случае нет риска получить NullPointerException. Или, как вариант, ставить слева строковую константу: «text».equals(value)
Ответ написан
Комментировать
rvller
@rvller
Строки сравниваются через s.equals().
Ответ написан
Комментировать
trilodi
@trilodi Автор вопроса
Спасибо большое. Просто как и писал с яврй только знакомлюсь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы