Сейчас я изучаю Android, и я пишу некоторые простые коды в соответствии с книгой.
я создаю проект андроида с именем Chapter03_ResourceActivity, а затем создаю test.xml в res/xml/folder, содержимое выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<customer name = "first_name" age = "1" email = "[email protected]" />
<customer name = "second_name" age = "2" email = "[email protected]" />
</resources>
и введите коды в Chapter03_ResourceActivity.java (src/com.app.MainActivity/Chapter03_ResourceActivity.java) следующим образом:
package com.app.MainActivity;
import org.xmlpull.v1.XmlPullParserException;
import android.app.Activity;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Chapter03_ResourceActivity extends Activity {
/** Called when the activity is first created. */
private Button myButton;
private TextView myTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button myButton = (Button)findViewById(R.id.btn_xml);
final TextView myTextView = (TextView)findViewById(R.id.text_xml);
myButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StringBuilder sb = new StringBuilder();
XmlResourceParser xrp = getResources().getXml(R.xml.test);
int counter = 0;
try {
while(xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {
if(xrp.getEventType() == XmlResourceParser.START_TAG) {
String name = xrp.getName();
if(name.equals("customer")) {
counter ++;
sb.append(counter + " Customer" + "\n");
sb.append(xrp.getAttributeValue(0) + "\n");
sb.append(xrp.getAttributeValue(1) + "\n");
sb.append(xrp.getAttributeValue(2) + "\n\n");
}
xrp.next();
}
}
myTextView.setText(sb.toString()); <<--Here Eclipse mark an error.
catch(XmlPullParserException e) {
e.printStackTrace();
}
}
}
}); <<--Here Eclipse mark another error.
}
}
В коде отмечены две ошибки. я попытался решить это сам, но простите мою скуку, я не могу ее найти. Я много раз подсчитывал количество "{" и "}" и просто считаю, что они равны. Может, я действительно ошибся? Или что-то, что я не сделал, сделал эту ошибку? Любая помощь оценивается.
catch(XmlPullParserException e) {
e.printStackTrace();
}
должно быть:
} catch(XmlPullParserException e) {
e.printStackTrace();
Это не количество, вызывающее у вас горе, просто размещение. На данный момент ваш catch
находится внутри блока try
а не сразу после него.
Линия, которая затмевает отметку как erro, вне любого блока кода...
Добавьте закрывающий скручивающий элемент перед уловом и переместите эту линию таким образом:
public class Chapter03_ResourceActivity extends Activity {
/** Called when the activity is first created. */
private Button myButton;
private TextView myTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button myButton = (Button)findViewById(R.id.btn_xml);
final TextView myTextView = (TextView)findViewById(R.id.text_xml);
myButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StringBuilder sb = new StringBuilder();
XmlResourceParser xrp = getResources().getXml(R.xml.test);
int counter = 0;
try {
while(xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {
if(xrp.getEventType() == XmlResourceParser.START_TAG) {
String name = xrp.getName();
if(name.equals("customer")) {
counter ++;
sb.append(counter + " Customer" + "\n");
sb.append(xrp.getAttributeValue(0) + "\n");
sb.append(xrp.getAttributeValue(1) + "\n");
sb.append(xrp.getAttributeValue(2) + "\n\n");
}
xrp.next();
}
}
myTextView.setText(sb.toString()); <<--Now is fine
} catch(XmlPullParserException e) {
e.printStackTrace();
}
}
}
});
}
}
Вы начинаете свой блок try с {, но вы никогда не закрываете его с помощью}. Таким образом, вы должны добавить} перед оператором catch.
Source
в Eclipse). Тогда подобные структурные проблемы часто видны сразу.