Делать Split к TextView, вычислив возраст

У меня есть мой код, чтобы вычислять возраст имея в виду месяцы и день даты рождения, но я хочу сделать split, чтобы посылать только число возраста он делал TextView, я помещаю пример:

introducir la descripción de la imagen aquí

В TextView, который я хочу, чтобы он вышел, он этот:

возраст = (TextView) findViewById (R.id.edad);

Мой код,

MainActivity:

public class MainActivity extends Activity implements OnClickListener{
    private Button btnStart;
    static final int DATE_START_DIALOG_ID = 0;
    private int startYear=1970;
    private int startMonth=6;
    private int startDay=15;
    private AgeCalculation age = null;
    private TextView currentDate;
    private TextView birthDate;
    private TextView result;
    TextView edad;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        age=new AgeCalculation();
        currentDate=(TextView) findViewById(R.id.textView1);
        currentDate.setText("Current Date(DD/MM/YY) : "+age.getCurrentDate());
        birthDate=(TextView) findViewById(R.id.textView2);
        result=(TextView) findViewById(R.id.textView3);
        edad=(TextView) findViewById(R.id.edad);
        btnStart=(Button) findViewById(R.id.button1);
        btnStart.setOnClickListener(this);

    }

    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
            case DATE_START_DIALOG_ID:
                return new DatePickerDialog(this,
                        mDateSetListener,
                        startYear, startMonth, startDay);
        }
        return null;
    }

    private DatePickerDialog.OnDateSetListener mDateSetListener
            = new DatePickerDialog.OnDateSetListener() {
        public void onDateSet(DatePicker view, int selectedYear,
                              int selectedMonth, int selectedDay) {
            startYear=selectedYear;
            startMonth=selectedMonth;
            startDay=selectedDay;
            age.setDateOfBirth(startYear, startMonth, startDay);
            birthDate.setText("Date of Birth(DD/MM/YY): "+selectedDay+":"+(startMonth+1)+":"+startYear);
            calculateAge();
        }
    };
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
            case R.id.button1:
                showDialog(DATE_START_DIALOG_ID);
                break;

            default:
                break;
        }
    }
    private void calculateAge()
    {
        age.calcualteYear();
        age.calcualteMonth();
        age.calcualteDay();
        Toast.makeText(getBaseContext(), "click the resulted button"+age.getResult() , Toast.LENGTH_SHORT).show();
        result.setText(age.getResult()+(" Años"));
    }
}

AgeCalculation:

public class AgeCalculation {
    private int startYear;
    private int startMonth;
    private int startDay;
    private int endYear;
    private int endMonth;
    private int endDay;
    private int resYear;
    private int resMonth;
    private int resDay;
    private Calendar end;
    public String getCurrentDate()
    {
        end=Calendar.getInstance();
        endYear=end.get(Calendar.YEAR);
        endMonth=end.get(Calendar.MONTH);
        endMonth++;
        endDay=end.get(Calendar.DAY_OF_MONTH);
        return endDay+":"+endMonth+":"+endYear;
    }
    public void setDateOfBirth(int sYear, int sMonth, int sDay)
    {
        startYear=sYear;
        startMonth=sMonth;
        startMonth++;
        startDay=sDay;

    }
    public void calcualteYear()
    {
        resYear=endYear-startYear;

    }

    public void calcualteMonth()
    {
        if(endMonth>=startMonth)
        {
            resMonth= endMonth-startMonth;
        }
        else
        {
            resMonth=endMonth-startMonth;
            resMonth=12+resMonth;
            resYear--;
        }

    }
    public void  calcualteDay()
    {

        if(endDay>=startDay)
        {
            resDay= endDay-startDay;
        }
        else
        {
            resDay=endDay-startDay;
            resDay=30+resDay;
            if(resMonth==0)
            {
                resMonth=11;
                resYear--;
            }
            else
            {
                resMonth--;
            }

        }
    }

    public String getResult()
    {
        return resDay+":"+resMonth+":"+resYear;
    }

}

xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Date Of Birth" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/button1"
        android:layout_marginTop="23dp"
        android:text="Current Date"
        android:visibility="gone"/>

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="18dp"
        android:text="Birth Date"
        android:visibility="gone"/>

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView2"
        android:layout_marginTop="16dp"
        android:text="Result"
        android:textAlignment="center"
        android:textSize="36sp"
        android:textStyle="normal|bold" />

    <TextView
        android:text="Edad"
        android:layout_alignParentLeft="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/edad"
        android:layout_marginTop="120dp"
        android:textStyle="normal|bold"
        android:textSize="36sp" />

</RelativeLayout>

Если он лучше с другим методом, чем он не был с Split, прокомментируйте мне это, спасибо!

1
задан 23.01.2017, 16:10
0 ответов

Я показываю тебя, как ты можешь использовать split:

String[] dayMonthYear = age.getResult().split(":");
String day = dayMonthYear[0];
String month= dayMonthYear[1];
String year = dayMonthYear[2];
edad.setText(year  + " Años");

Другая вещь, которую ты можешь делать, - get resYear, который ты можешь называть, сделав все вычисления:

 public String getResYear()
  {
    return resYear;
  }

//...
     age.calcualteYear();
     age.calcualteMonth();
     age.calcualteDay();
     edad.setText(age.getResYear()+ " Años");

Привет.

1
ответ дан 03.12.2019, 17:32
  • 1
    Я увидел, что ты издал твой ответ, спасибо за split, но он мне кажется má s có мода первая opció n, который ты поместил, так как для того, что я хочу сделать потом, он приходит ко мне лучше, но дает мне ошибку Андроид Студио. ' void' type not allowed here @FabioVenturiPastor –  23.01.2017, 17:07
  • 2
    Если он прощает, это была моя неудача я не понял, что calcualteYear не devolví ни во что, сейчас я поместил тебя, как делание для того, чтобы он возвратил тебе результат. –  23.01.2017, 17:08
  • 3
    Проблема - что со второй opció n он не вычисляет хорошо возраст, а именно, не использует месяц и dí в, следовательно только вычисли añ или рождения @FabioVenturiPastor, но используя совершенный Split! тебе не хватало añ adir; detrá s каждого String, но решенный! Спасибо! –  23.01.2017, 17:19
  • 4
    У тебя есть вся razó n друг, быть с несколькими языками считает меня немного сумасшедшим... Я издал снова ответ, посмотри посмотрим он подает тебе эту solució n. –  23.01.2017, 18:16