Cześć,
zacząłem naukę Androida i natknąłem się na kilka problemów. Może najpierw zarysuję co chciałbym osiągnąć:
1) Użytkownik wpisuje swoje dane ( wiek, wzrost, waga )
*wiek narazie jest wpisywany jako faktyczny wiek, a nie jak sugeruje hint jako rok urodzenia
2) Użytkownik wybiera płeć - w tym miejscu następuje przeliczenie głównej wartości - ppm
3) Użytkownik wybiera aktywność fizyczną - w tym miejscu następuje przeliczenie cpm - na podstawie pobranej z ptk 2) ppm
4) Użytkownik wybiera swoją dietę - tu nastąpi wyliczenie zapotrzebowania na poszczególne makroskładniki ( białko, tłuszcz, węglowodany ) na podstawie cpm
5) Po kliknięciu przycisku otworzy się nowe Activity w którym na TextView ukaże się informacja o: ppm, cpm, makroskładnikach, /ewentualnie moga być też przesłane dane na temat wpisanych wartości tj. wiek, waga, wzrost/
Moje problemy:
1) Nie potrafię napisać kodu tak, aby wszystko wykonywało się zgodnie z kolejnością. Część instrukcji ( przynajmniej tak poznajdowałem w różnych poradnikach na internecie ) musi być wykonana w onCreate, a to powoduje u mnie kłopot bo miesza w kolejności i trzeba się naklikać po kilka razy, żeby faktycznie obliczyło wartość.
Tutaj jest kod z MainActivity.java:
Spoiler
package com.example.maronzo.aplikacjaandroid2019zaliczenie;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
private EditText wiek;
private EditText waga;
private double ppm;
private int age;
private double weight;
private TextView resluts;
private RadioGroup sexGrp;
private double cpm;
Object value;
Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wiek = (EditText) findViewById(R.id.podajDateUrodzenia);
waga = (EditText) findViewById(R.id.podajWage);
btn1 = (Button) findViewById(R.id.przejdzDalej2);
resluts = (TextView) findViewById(R.id.textViewaaaaaa);
sexGrp = (RadioGroup) findViewById(R.id.sexGroup);
Spinner spinner = findViewById(R.id.spinner2);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.numbers2, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
sexGrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
getAgeAndWeight();
if (checkedId == R.id.plecMezczyzna) {
if (age < 3) {
ppm = (59.512 * weight) - 30.4;
} else if ((age >= 3) & (age < 10)) {
ppm = (22.706 * weight) + 504.3;
} else if ((age >= 10) & (age < 18)) {
ppm = (17.686 * weight) + 658.20;
} else if ((age >= 18) & (age < 30)) {
ppm = (15.057 * weight) + 692.20;
} else if ((age >= 30) & (age < 60)) {
ppm = (11.472 * weight) + 873.10;
} else if (age > 60) {
ppm = (11.711 * weight) + 587.70;
}
}
if (checkedId == R.id.plecKobieta) {
if (age < 3) {
ppm = (58.317 * weight) - 31.10;
} else if ((age >= 3) & (age < 10)) {
ppm = (20.315 * weight) + 485.90;
} else if ((age >= 10) & (age < 18)) {
ppm = (13.384 * weight) + 692.60;
} else if ((age >= 18) & (age < 30)) {
ppm = (14.818 * weight) + 486.60;
} else if ((age >= 30) & (age < 60)) {
ppm = (8.126 * weight) + 845.60;
} else if (age > 60) {
ppm = (9.082 * weight) + 658.50;
}
}
}
});
}
public void getAgeAndWeight() {
String wiekStr = wiek.getText().toString();
String wagaStr = waga.getText().toString();
weight = Double.parseDouble(wagaStr);
age = Integer.parseInt(wiekStr);
}
public void click(View view) {
getAgeAndWeight();
Intent intent = new Intent(this, Main2Activity.class);
intent.putExtra(String.valueOf(Main2Activity.ppm2Activ), ppm);
intent.putExtra(String.valueOf(Main2Activity.cpm2Activ), cpm);
startActivity(intent);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
value = parent.getItemAtPosition(position);
TextView aktywnoscFiz = (TextView) findViewById(R.id.opisAktywnosciFizycznej);
switch (position) {
case 0:
resluts.setText("1 - Pacjent chory lezacy w lozku");
cpm = ppm * 1.25;
break;
case 1:
resluts.setText("2 - Niska aktywnosc fizyczna");
cpm = ppm * 1.4;
break;
case 2:
resluts.setText("3 - Umiarkowana aktywnosc fizyczna");
cpm = ppm * 1.6;
break;
case 3:
resluts.setText("4 - Aktywny tryb zycia");
cpm = ppm * 1.75;
break;
case 4:
resluts.setText("5 - Bardzo aktywny tryb zycia");
cpm = ppm * 2;
break;
case 5:
resluts.setText("6 - Wyczynowe uprawianie sportu");
cpm = ppm * 2.1;
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}
Tu jest Main2Activity.java:
Spoiler
package com.example.maronzo.aplikacjaandroid2019zaliczenie;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class Main2Activity extends AppCompatActivity {
public final static Double ppm2Activ = 0.0;
public final static Double cpm2Activ = 0.0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Bundle b = getIntent().getExtras();
Double ppm = b.getDouble(String.valueOf(ppm2Activ), 0.0);
Double cpm = b.getDouble(String.valueOf(cpm2Activ), 0.0);
TextView info = (TextView) findViewById(R.id.informacjeOczlowieku);
info.setText("Podstawowa przemiana materii: " + ppm + "CPM: " + cpm);
}
}
Tu jest plik Main z xml:
Spoiler
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="center"
android:text="Uzytkowniku!"
android:textSize="40dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="Potrzebujemy kilku informacji o Tobie"
android:textSize="16dp" />
<EditText
android:id="@+id/podajWage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="150dp"
android:layout_marginTop="50dp"
android:layout_marginRight="150dp"
android:gravity="center"
android:hint="Podaj w [Kg]"
android:inputType="numberDecimal"
android:textSize="12dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="-8dp"
android:gravity="center"
android:text="Wpisz swoja aktualna wage"
android:textSize="15dp"
android:textStyle="italic" />
<EditText
android:id="@+id/podajWzrost"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="145dp"
android:layout_marginTop="1dp"
android:layout_marginRight="145dp"
android:gravity="center"
android:hint="Podaj w [cm]"
android:inputType="numberDecimal"
android:textSize="12dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="-8dp"
android:gravity="center"
android:text="Wpisz swoj wzrost"
android:textSize="15dp"
android:textStyle="italic" />
<EditText
android:id="@+id/podajDateUrodzenia"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="145dp"
android:layout_marginTop="1dp"
android:layout_marginRight="145dp"
android:gravity="center"
android:hint="RRRR"
android:inputType="numberDecimal"
android:textSize="12dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="-8dp"
android:gravity="center"
android:text="Wpiz swoj rok urodzenia"
android:textSize="15dp"
android:textStyle="italic" />
<RadioGroup
android:layout_width="match_parent"
android:id="@+id/sexGroup"
android:layout_height="wrap_content"
android:layout_marginLeft="55dp"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/plecMezczyzna"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Mezczyzna"
/>
<RadioButton
android:id="@+id/plecKobieta"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Kobieta"
/>
</RadioGroup>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="Wybierz diete, ktora Cie interesuje:"
android:textSize="19dp" />
<Spinner
android:id="@+id/spinner1"
android:layout_height="40dp"
android:layout_width="400dp"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="0dp"
android:entries="@array/numbers"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginLeft="10dp"
android:text="Opis diety:"
android:textSize="16dp" />
<TextView
android:id="@+id/opisDiety"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_marginTop="-12dp"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean mi tellus, volutpat sed interdum nec, vestibulum eget lacus. Suspendisse potenti. Maecenas magna libero, vulputate et blandit at, eleifend id turpis. Donec sed feugiat magna. Aliquam convallis nisi efficitur lectus accumsan, quis aliquam lacus fringilla. Donec rutrum sapien in mauris pretium eleifend."
android:textSize="14dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="Wybierz diete, ktora Cie interesuje:"
android:textSize="19dp" />
<Spinner
android:id="@+id/spinner2"
android:layout_height="40dp"
android:layout_width="400dp"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="0dp"
android:entries="@array/numbers2"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginLeft="10dp"
android:text="Opis diety:"
android:textSize="16dp" />
<TextView
android:id="@+id/opisAktywnosciFizycznej"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_marginTop="-12dp"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean mi tellus, volutpat sed interdum nec, vestibulum eget lacus. Suspendisse potenti. Maecenas magna libero, vulputate et blandit at, eleifend id turpis. Donec sed feugiat magna. Aliquam convallis nisi efficitur lectus accumsan, quis aliquam lacus fringilla. Donec rutrum sapien in mauris pretium eleifend."
android:textSize="14dp" />
<Button
android:id="@+id/przejdzDalej2"
android:layout_width="120dp"
android:layout_height="70dp"
android:layout_marginLeft="240dp"
android:layout_marginTop="40dp"
android:layout_marginBottom="40dp"
android:gravity="center"
android:onClick="click"
android:text="GOTOWE"
/>
<TextView
android:id="@+id/textViewaaaaaa"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Wiek \n ssds\n sfgs\n" />
</LinearLayout>
</ScrollView>
Spoiler
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Main2Activity">
<TextView
android:id="@+id/informacjeOczlowieku"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
Tutaj activity_main2.xml
A tu niżej wstawiam tablicę Stringów:
Spoiler
<resources>
<string name="app_name">AplikacjaAndroid2019Zaliczenie</string>
<string-array name="numbers">
<item>1 - Dieta umiarkowana</item>
<item>2 - Dieta zrównoważona</item>
<item>3 - Dieta Bogatobiałkowa</item>
<item>4 - Dieta Niskotłuszczowa</item>
<item>5 - Dieta Niskowęglowodanowa</item>
<item>6 - Dieta Niskobiałkowa</item>
<item>7 - Dieta Ketogeniczna</item>
<item>8 - Dieta Optymalna</item>
</string-array>
<string-array name="numbers2">
<item>1 - Pacjent chory lezacy w lozku</item>
<item>2 - Niska aktywnosc fizyczna</item>
<item>3 - Umiarkowana aktywnosc fizyczna</item>
<item>4 - Aktywny tryb zycia</item>
<item>5 - Bardzo aktywny tryb zycia</item>
<item>6 - Wyczynowe uprawianie sportu</item>
</string-array>
</resources>
Na prośbę Moderatora @mmaciejowrozdzielam temat na 3 wątki w każdym poruszając osobno inny problem