Answer the question
In order to leave comments, you need to log in
How to arrange an algorithm (sequence) of performed calculations on an Activity?
Hello, I have some Activity, through which a certain set of computational operations must be performed, and these actions must be performed strictly sequentially, under a certain algorithm.
This algorithm should be performed as follows:
1) Action initialization (RadioGroup);
2) Selection of variable values for the selected action (ListView);
3) Outputting a response to the next Activity(Toast).
Now
, when executing the algorithm, 0.0 is displayed.
However, if you perform the 2nd action first, and then the 1st, the application displays the correct answer.
How can the error be corrected?
MessageActivity1 code:
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.IdRes;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import static app.analysis.mai.MatrixMessageActiviry123.w0;
public class MessageActivity1 extends AppCompatActivity {
TextView celzadach, poyas4, poyas5, poyas6;
RadioGroup rgroup;
RadioButton sravnenkr1, sravnenkr2, sravnenkr3; //Объявление элементов MessageActivity1
ListView spisok1;
Spinner spn2;
ArrayAdapter<String> adapter2;
String prioritet[] = {"9", "8", "7", "6", "5", "4", "3", "2", "1"};
double znachn1; // Объявление переменных
Button sootnesen1;
static double d, b;
boolean block;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_message1);
celzadach = (TextView) findViewById(R.id.celzadach);
Intent intent5 = getIntent();
String message1 = intent5.getStringExtra("message1"); //Перенос введенного сообщения из RememderEditText Activity1 в TextView MessageActivity1
celzadach.setText(message1);
poyas4 = (TextView) findViewById(R.id.poyas4);
poyas4.setText("Определение важности критериев сравнения относительно заявленной цели:");
poyas5 = (TextView) findViewById(R.id.poyas5);
poyas5.setText("Какой из сравниваемых критериев более предпочтительный?");
poyas6 = (TextView) findViewById(R.id.poyas6);
poyas6.setText("Предпочтительней на сколько?");
sravnenkr1 = (RadioButton) findViewById(R.id.sravnenkr1);
Intent intent6 = getIntent();
String message2 = intent6.getStringExtra("message2"); //Перенос введенного сообщения из RememderEditText Activity1 в RadioButton MessageActivity1
sravnenkr1.setText(message2);
sravnenkr2 = (RadioButton) findViewById(R.id.sravnenkr2);
Intent intent7 = getIntent();
String message3 = intent7.getStringExtra("message3"); //Перенос введенного сообщения из RememderEditText Activity1 в RadioButton MessageActivity1
sravnenkr2.setText(message3);
sravnenkr3 = (RadioButton) findViewById(R.id.sravnenkr3);
sravnenkr3.setText("Сравниваемые критерии одинаково важны");
rgroup = (RadioGroup) findViewById(R.id.RadioGroup1);
rgroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, @IdRes int q) { //Обработчик событий нажатия на RadioButton, по выбору действия
d = 1;
b = 1;
if (q == sravnenkr1.getId()) { //Обработка нажатия 1-го RadioButton c присвоением переменной d и b значений
d = znachn1;
b = 1 / d;
}
else if (q == sravnenkr2.getId()) { //Обработка нажатия 2-го RadioButton c присвоением переменной d и b значений
b = znachn1;
d = 1 / b;
}
}
}); //Возможная ошибка кроется тут, т.к. дефакто присваиваемая тут переменная znachn1=0.0, уже после её присваивания игнорируется работа другого обработчика
spisok1 = (ListView) findViewById(R.id.spisokPrioritet);
adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, prioritet);
spisok1.setAdapter(adapter2);
spisok1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position2, long id) { //Обработчик событий нажатия на RadioButton, по выбору значения переменной znachn1 по id
znachn1 = (id < 9) ? 9 - id : 0; //Обработка нажатия на элементы списка, где согласно условию znachn1 = (ЕСЛИ ID < 9) ТО 9 - ID ИНАЧЕ 0
}
});
sootnesen1 = (Button) findViewById(R.id.sootnesen1);
sootnesen1.setText("Далее");
sootnesen1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent8 = new Intent(MessageActivity1.this, MessageActivity2.class);
Toast toast1 = Toast.makeText(getApplicationContext(),"w0="+w0, Toast.LENGTH_SHORT); // Вывод значения импортированной ранее переменной w0, посредсвом произведённого вычисления, через Toast на MessageActivity2 по нажатию на Button
toast1.show();
startActivity(intent8);
}
});
}
}
Answer the question
In order to leave comments, you need to log in
options:
1) hide the list until the initialization of the action is done
2) the list is not active until the initialization is done
3) when the button is pressed, check for the correctness of the operation algorithm.
4) make a wizard with several fragments with a sequence of selecting actions first, then a list.
etc.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question