我的代码中有一些try / catch中的字符串。我需要访问同一类的其他部分中的字符串,但我不能。我尝试删除try / catch,它不会让我没有抛出以下错误:
未处理的异常类型JSONException
这是我的try / catch代码。将它变为普通类的最佳方法是什么,以便我可以访问同一类中其他代码部分的字符串? (此代码在默认的oncreate包内)
try {
// Getting JSON Array
user = json.getJSONArray(TAG_USER);
JSONObject c = user.getJSONObject(0);
// Storing JSON item in a String Variable
String name = c.getString(TAG_NAME);
String messages = c.getString(TAG_MESSAGES);
String wins = c.getString(TAG_WINS);
String display = c.getString(TAG_DISPLAY);
String email = c.getString(TAG_EMAIL);
String pw = c.getString(TAG_PW);
String created = c.getString(TAG_CREATED);
String updated = c.getString(TAG_UPDATED);
//Importing TextView
TextView name1 = (TextView)findViewById(R.id.tvfullname);
TextView messages1 = (TextView)findViewById(R.id.envelope);
TextView wins1 = (TextView)findViewById(R.id.wins);
TextView created1 = (TextView)findViewById(R.id.tvcreated_at);
TextView updated1 = (TextView)findViewById(R.id.tvupdated_at);
//Set JSON Data in its respectable TextView
name1.setText("Hello " + name);
updated1.setText("Your last login was " + updated);
// print error if applicable.
} catch (JSONException e) {
e.printStackTrace();
}
答案 0 :(得分:0)
使那些你想要访问的字符串全局。声明那些在类级别的字符串,以便可以在类中的任何位置访问它。
例如
假设您的班级名称为X,并且您想要访问String name
然后这样做
class X
{
String name;
try
{
name=c.getString(TAG_NAME);
//other codes
}
catch (JSONException e) {
e.printStackTrace();
}
}
现在回答这个我需要访问同一类其他部分的字符串
您可以使用相同的方法或不同的方法访问班级中的任何位置
答案 1 :(得分:0)
在try-catch块之外声明你的字符串
并在try块内分配值。
外部尝试阻止
String name = null;
String messages = null;
String wins = null;
String display = null;
String email = null;
String pw = null;
String created = null;
String updated = null;
内部尝试块
// Storing JSON item in a String Variable
name = c.getString(TAG_NAME);
messages = c.getString(TAG_MESSAGES);
wins = c.getString(TAG_WINS);
display = c.getString(TAG_DISPLAY);
email = c.getString(TAG_EMAIL);
pw = c.getString(TAG_PW);
created = c.getString(TAG_CREATED);
updated = c.getString(TAG_UPDATED);
另一种方法如果你想删除try-cath,你可以在你的方法/类中添加“throws”(这样你就可以将异常传播给调用处理类)。
顺便说一句,这个问题只有在你是java新手的时候才有意义,否则你需要刷你的基础java学校的大时间:))
答案 2 :(得分:0)
在try之外声明字符串,它们将具有更广泛的范围,以便它们可以在其他地方使用。
答案 3 :(得分:0)
您需要做的是在try-catch
之外声明这些变量可以在全局范围内声明它们
String name;
String messages;
String wins ;
String display;
String email;
String pw;
String created ;
String updated ;
try {
// Getting JSON Array
user = json.getJSONArray(TAG_USER);
JSONObject c = user.getJSONObject(0);
// Storing JSON item in a String Variable
name = c.getString(TAG_NAME);
messages = c.getString(TAG_MESSAGES);
wins = c.getString(TAG_WINS);
display = c.getString(TAG_DISPLAY);
email = c.getString(TAG_EMAIL);
pw = c.getString(TAG_PW);
created = c.getString(TAG_CREATED);
updated = c.getString(TAG_UPDATED);
//Importing TextView
TextView name1 = (TextView)findViewById(R.id.tvfullname);
TextView messages1 = (TextView)findViewById(R.id.envelope);
TextView wins1 = (TextView)findViewById(R.id.wins);
TextView created1 = (TextView)findViewById(R.id.tvcreated_at);
TextView updated1 = (TextView)findViewById(R.id.tvupdated_at);
//Set JSON Data in its respectable TextView
name1.setText("Hello " + name);
updated1.setText("Your last login was " + updated);
// print error if applicable.
} catch (JSONException e) {
e.printStackTrace();
}
}
答案 4 :(得分:0)
将字符串变量声明为globel。
private static final NAME =“name”;
在所有必需区域使用NAME
答案 5 :(得分:0)
试试这个
String name = null;
String messages = null;
String wins = null;
String display = null;
String email = null;
String pw = null;
String created = null;
String updated = null;
try {
user = json.getJSONArray(TAG_USER);
JSONObject c = user.getJSONObject(0);
// Storing JSON item in a String Variable
name = c.getString(TAG_NAME);
messages = c.getString(TAG_MESSAGES);
wins = c.getString(TAG_WINS);
display = c.getString(TAG_DISPLAY);
email = c.getString(TAG_EMAIL);
pw = c.getString(TAG_PW);
created = c.getString(TAG_CREATED);
updated = c.getString(TAG_UPDATED);
//Importing TextView
TextView name1 = (TextView)findViewById(R.id.tvfullname);
TextView messages1 = (TextView)findViewById(R.id.envelope);
TextView wins1 = (TextView)findViewById(R.id.wins);
TextView created1 = (TextView)findViewById(R.id.tvcreated_at);
TextView updated1 = (TextView)findViewById(R.id.tvupdated_at);
//Set JSON Data in its respectable TextView
name1.setText("Hello " + name);
updated1.setText("Your last login was " + updated);
// print error if applicable.
} catch (JSONException e) {
e.printStackTrace();
}
}
答案 6 :(得分:0)
我认为你可以用getXXX方法取代getXXX方法,它会是一个更好的选择,你这么认为吗? 例如:
try {
name = c.getString(TAG_NAME);
} catch (Exception e) {
//
}
现在你可以尝试下面的代码:
name = c.optString(TAG_NAME);
好的,就是这样。