Android Volley запрос - в рамках запроса заполнения пользовательского класса не работаетAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android Volley запрос - в рамках запроса заполнения пользовательского класса не работает

Сообщение Anonymous »

У меня есть действие, состоящее из куча текстовых обзоров (четырнадцать) и двух кнопок.
Я создал пользовательский класс с именем с именем урока < /code>, который в основном имеет методы конструктора и получения для его переменных.

Код: Выделить всё

populateLessonDetails(myURL)
и
[*]

Код: Выделить всё

populateLessonTextViews()
.

Я создал частный урок mlesson; переменная внутри моей деятельности, прежде всего @overrides , потому что я пытаюсь использовать эту переменную, чтобы заполнить ее позже. Получение всех данных от json внутри onresponse () , сохранение их в string переменных, все еще внутри OnResponse () , а затем, все еще внутри onResponse () я пытаюсь заполнить переменную mless , вызывая

Код: Выделить всё

mLesson = new Lesson(mName, mRoom, mExtra, mAddress, mPC, mCity, mStart, mDate, mRID, mMaxAtt, mCurrentAtt);
- переменные, используемые в конструкторе, представляют собой переменные строки , содержащие данные JSON. Все в порядке. < /P>
Теперь, мой populatelaslessOndetails () < /code> заканчивается.
он возвращается в oncreate () < /code> и продолжается со следующей строкой кода, которая будет называть PopulateressOntextviews () < /code>. Mlesson с помощью методов Getter, чтобы установить его на TextViews Like So:

Код: Выделить всё

    //Lesson Name Big
TextView lessonNameTextBig = (TextView) findViewById(R.id.text_activelesson_name_big);
lessonNameTextBig.setText(mLesson.getLessonName());
Это правильный способ сделать это, я уже делал это уже несколько раз, но мое приложение вылетает на второй строке. Я предполагаю, что я заполняю его внутри onresponse () jsonarrayRequest , который находится внутри PopulateressOndetails () действителен только для этой конкретной функции, область варьи Функция. < /p>
Теперь как я могу это исправить? Должен ли я установить mlesson в качестве параметра для populateslessondetails () , а затем также возвращать его (в настоящее время численные функции void )? Затем сохраните возвращаемое значение в другую переменную урока типа и установите эту новую переменную в качестве параметра для PopulatelaSlessOntextViews () ? Я попробовал пару таких вещей, но они не работали, но, возможно, это только я не делаю это правильно.public class ActiveLesson extends AppCompatActivity {
// there are also some other variables up here
private Lesson mLesson;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_active_lesson);
requestQ = Volley.newRequestQueue(this);
Intent intent = getIntent();
Bundle extras = intent.getExtras();
mDatum = extras.getString("datum");
mRID = extras.getString("rid");
mVon = extras.getString("von");

myActiveLessonURLFiltered += "datum="+mDatum+"&rid="+mRID+"&von="+mVon;

populateLessonDetails(myActiveLessonURLFiltered);
populateLessonTextViews();

}

private void populateLessonDetails(String myActiveLessonURLFiltered) {

JsonArrayRequest lessonJAR = new JsonArrayRequest(myActiveLessonURLFiltered,
new Response.Listener() {
@Override
public void onResponse(JSONArray response){
try{
for (int i=0; i < response.length(); i++)
{
JSONObject jsonObject = response.getJSONObject(i);
String mName = jsonObject.getString("Name");
String mRoom = jsonObject.getString("Raum");
String mExtra = jsonObject.getString("Zusatz");
String mAdresse = jsonObject.getString("Address");
String mPC = jsonObject.getString("PLZ");
String mCity = jsonObject.getString("City");
String mMaxAtt = jsonObject.getString("maxAnz");
String mCurrentAtt = jsonObject.getString("belegtAnz");

if(mExtra.length()==0 || mExtra == "null")
mExtra="";
if(mRoom.length()==0 || mRoom == "null")
mRoom="";
else
mRoom="Room: "+mRoom;

if(mName.length()==0 || mName == "null")
mName="";

mLesson = new Lesson(mName, mRoom, mExtra, mAdresse,
mPC, mCity, mVon, mDatum, mRID, mMaxAtt, mCurrentAtt);

Log.i("mmLesson"," Lesson with new = "+ mLesson.getLessonName()
+" "+mLesson.getLessonCity());

}
}catch (JSONException e){
e.printStackTrace();
}

}
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error){
error.printStackTrace();
Toast.makeText(ActiveLesson.this, "No Lessons Available",
Toast.LENGTH_LONG).show();
}
}){

@Override
public Map getHeaders() throws AuthFailureError {
HashMap headers = new HashMap();
headers.put("Accept", "application/json");
return headers;
}

};
requestQ.add(lessonJAR);
}

private void populateLessonTextViews(Lesson mLesson) {

//Lesson Name Big
TextView lessonNameTextBig = (TextView) findViewById(R.id.text_activelesson_name_big);
lessonNameTextBig.setText(mLesson.getLessonName());

// there are others lines of code like these two,
// but I've left them out, since they are all the same
}
< /code>
Если некоторые могли бы мне помочь, я буду признателен. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/347 ... ot-working
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»