Witam, napisałem następujący program:
package com.example.kamil.surveycalc;
import android.content.pm.ActivityInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;
public class azymut extends AppCompatActivity
{
EditText xp, yp, xk, yk ;
TextView odleglosc2, azymut2;
Button poblicz, clear;
Switch switch1;
double xp1, yp1, xk1, yk1, dx, dy, d_bazy, odleglosc3, azymut3, azymut4 ;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.activity_azymut);
switch1 = (Switch)findViewById(R.id.switch1);
xp = (EditText)findViewById(R.id.xp);
yp = (EditText)findViewById(R.id.yp);
xk = (EditText)findViewById(R.id.xk);
yk = (EditText)findViewById(R.id.yk);
odleglosc2 = (TextView)findViewById(R.id.odleglosc2);
azymut2 = (TextView)findViewById(R.id.azymut2);
poblicz = (Button)findViewById(R.id.poblicz);
clear = (Button)findViewById(R.id.clear);
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
String Text = xp.getText().toString();
String Text2 = yp.getText().toString();
String Text3 = xk.getText().toString();
String Text4 = yk.getText().toString();
String Text5 = odleglosc2.getText().toString();
String Text6 = azymut2.getText().toString();
xp.setText("");
yp.setText("");
xk.setText("");
yk.setText("");
odleglosc2.setText("0.000");
azymut2.setText("0.0000");
}
});
//POCZĄTEK SWITCHA
switch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (isChecked)
{
Toast.makeText(getApplicationContext(),"Grady", Toast.LENGTH_SHORT).show();
poblicz.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
xp1 = Double.parseDouble(xp.getText().toString());
yp1 = Double.parseDouble(yp.getText().toString());
xk1 = Double.parseDouble(xk.getText().toString());
yk1 = Double.parseDouble(yk.getText().toString());
dx=xk1-xp1;
dy=yk1-yp1;
d_bazy = Math.sqrt(Math.pow(dx,2)+Math.pow(dy,2));
if ((dy>0) && (dx>0))
{
azymut3=(Math.atan((dy/dx)))*200/Math.PI;
}
else if ((dy>0) && (dx<0))
{
azymut3=200-((Math.atan((dy/dx*(-1))))*200/Math.PI);
}
else if ((dy<0) && (dx<0))
{
azymut3=200+((Math.atan((dy*(-1)/dx*(-1))))*200/Math.PI);
}
else if ((dy<0) && (dx>0))
{
azymut3=400-((Math.atan((dy*(-1)/dx)))*200/Math.PI);
}
else if((dx==0) && (dy>0))
{
azymut3=100;
}
else if((dx==0) && (dy<0))
{
azymut3=300;
}
else if((dy==0) && (dx<0))
{
azymut3=200;
}
else if((dy==0) && (dx>0))
{
azymut3=0;
}
odleglosc3 = Math.round(d_bazy*1000.0)/1000.0;
azymut4 = Math.round(azymut3*10000.0)/10000.0;
odleglosc2.setText(String.valueOf(odleglosc3));
azymut2.setText(String.valueOf(azymut4));
}
});
}
else
{
Toast.makeText(getApplicationContext(),"Stopnie", Toast.LENGTH_SHORT).show();
poblicz.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
xp1 = Double.parseDouble(xp.getText().toString());
yp1 = Double.parseDouble(yp.getText().toString());
xk1 = Double.parseDouble(xk.getText().toString());
yk1 = Double.parseDouble(yk.getText().toString());
dx=xk1-xp1;
dy=yk1-yp1;
d_bazy = Math.sqrt(Math.pow(dx,2)+Math.pow(dy,2));
if ((dy>0) && (dx>0))
{
azymut3=(Math.atan((dy/dx)))*180/Math.PI;
}
else if ((dy>0) && (dx<0))
{
azymut3=180-((Math.atan((dy/dx*(-1))))*180/Math.PI);
}
else if ((dy<0) && (dx<0))
{
azymut3=180+((Math.atan((dy*(-1)/dx*(-1))))*180/Math.PI);
}
else if ((dy<0) && (dx>0))
{
azymut3=360-((Math.atan((dy*(-1)/dx)))*180/Math.PI);
}
else if((dx==0) && (dy>0))
{
azymut3=90;
}
else if((dx==0) && (dy<0))
{
azymut3=270;
}
else if((dy==0) && (dx<0))
{
azymut3=180;
}
else if((dy==0) && (dx>0))
{
azymut3=0;
}
odleglosc3 = Math.round(d_bazy*1000.0)/1000.0;
azymut4 = Math.round(azymut3*10000.0)/10000.0;
odleglosc2.setText(String.valueOf(odleglosc3));
azymut2.setText(String.valueOf(azymut4));
}
});
}
}
});
//KONIEC SWITCHA
}
}
Program ma obliczać wartość w stopniach lub w gradach w zależności od tego czy przycisk "switch" jest włączony czy też nie. Problem polega na tym, że zadanie pod switchem wykona się dopiero po jednokrotnym jego przełączeniu. Przykład:
- Wpisuję dane
- Naciskam oblicz
- Nic się nie dzieje
- Przełączam "switcha"
- Naciskam oblicz
- Program zwraca wartość w gradach
- Przełączam ponownie "switcha"
- Program zwraca wartość w stopniach
Jak widać, oba zadania wykonały się poprawnie, jednak dopiero po jednokrotnym przełączeniu switcha. Każde następne przęłączenie również działa prawidłowo.
Korzystając z okazji dopytam o jedną rzecz. Jak zrobić, aby wynik zawsze wyświetlał mi określoną ilośc miejsc po przecinku? Korzystając z tego kodu:
odleglosc3 = Math.round(d_bazy*1000.0)/1000.0;
azymut4 = Math.round(azymut3*10000.0)/10000.0;
Program ucina mi wszystko po pierwszym zerze po przecinku, przykład: jeżeli wynikiem jest 54,1234 jest ok, jeżeli wynikiem jest 54,0000 program zwraca mi 54,0, chciałbym aby zawsze zwracał mi wartość z 4 cyframi po przecinku.
Z góry dziękuję za pomoc,
Pozdrawiam,
Kamil