Сначала вы должны вызвать removeView () у родителя ребенка - PullRequest
0 голосов
/ 02 апреля 2011

Приложение должно рассчитывать размер платежа по кредиту и печатать ответ при нажатии кнопки, но когда я нажимаю кнопку, оно выдает следующее: java.lang.IllegalStateException: указанный дочерний элемент уже имеет родителя.Сначала вы должны вызвать removeView () для родительского объекта ребенка.

Вот схема:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:orientation="vertical">
    <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/kokota"></EditText>
    <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/prota"></EditText>
        <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/lainata"></EditText>
    <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/maksuta"></EditText>

    <Button android:layout_width="match_parent" android:text="Laske!" android:layout_height="70dip" android:id="@+id/btnClickMe"></Button>
    <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/tasaera"></TextView>
</LinearLayout>

И код:

package com.example.lainalaskuri;

import java.text.DecimalFormat;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.widget.EditText;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class Lainalaskuri extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btn1 = (Button)findViewById(R.id.btnClickMe);
        btn1.setOnClickListener(btnListener);
    }

    double N, p, m, n, l, B;

    public static double laskeTasaera(double p, double n, double m, double N) {
        double A = (Math.pow(1 + p /(100 * m),n) * (p / (100* m))) /
        (Math.pow(1 + p /(100*m), n) -1) * N;
        return A;
    }

    private OnClickListener btnListener = new OnClickListener()
    {
        public void onClick(View v)
        {   

            EditText kokota, prota, lainata, maksuta; 
            String koko, pro, laina, maksu;

            kokota = (EditText)findViewById(R.id.kokota);   
            prota = (EditText)findViewById(R.id.prota);   
            lainata = (EditText)findViewById(R.id.lainata);   
            maksuta = (EditText)findViewById(R.id.maksuta);   

            koko = kokota.getText().toString();  
            int N = Integer.parseInt(koko);    

            pro = prota.getText().toString();  
            double p = Double.parseDouble(pro);

            laina = lainata.getText().toString(); 
            int l = Integer.parseInt(laina);

            maksu = maksuta.getText().toString(); 
            int m = Integer.parseInt(maksu);

            n = l * m;

            B = laskeTasaera(p, n, m, N);

            TextView tasaera = (TextView) findViewById(R.id.tasaera);
               tasaera.setText((B) + " €");
               setContentView(tasaera);        
        }
    };

}

1 Ответ

0 голосов
/ 05 апреля 2011

Аргументом для setContentView обычно является XML-файл макета, а не объект View, как у вас здесь.

Я бы решил эту проблему, разбив ее на ряд более простых шагов. Во-первых, получите все виды, которые вы хотите на экране, и в нужном месте.

Затем напишите обработчик для события кнопки - заставьте его изменить метку на кнопке.

Наконец добавьте в расчеты.

Не откусывайте больше, чем можете прожевать - секрет успешного программирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...