NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Android komponenta editText.Text předávání vstupní hodnoty

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Vítězslav Škrabal:17.2.2016 7:09

Zdravím
Potřeboval bych vědět jak předat hodnotu s komponenty editText.text do MainActivity.java ? díky

 
Odpovědět
17.2.2016 7:09
Avatar
Afrodisiakum
Člen
Avatar
Afrodisiakum:17.2.2016 7:41

Moc nerozumím tomu, co přesně chceš... ale obecně text z textview získáš pomocí zavolání metody .getText() na objektu EditText, který ale musí být předtím inicializován.

EditText editText = (EditText)fin­dViewById(R.id­.editText);
String text = editText.getTex­t().toString();

 
Nahoru Odpovědět
17.2.2016 7:41
Avatar
Afrodisiakum
Člen
Avatar
Odpovídá na Afrodisiakum
Afrodisiakum:17.2.2016 7:46

*ale obecně text z EditText/TextView získáš...

 
Nahoru Odpovědět
17.2.2016 7:46
Avatar
Vítězslav Škrabal:17.2.2016 7:55

No toto jsem potřeboval ale ještě jak to převést na int když mám nastaveno edtittext input type numberDecimal ? možná to mě dělá v tom " hokej" díky

 
Nahoru Odpovědět
17.2.2016 7:55
Avatar
Vítězslav Škrabal:17.2.2016 8:12

Tak pomalu u6 mi to jde

@Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                rok = (EditText)findViewById(R.id.editText3);
                mesic = (EditText)findViewById(R.id.editText2);
                den = (EditText)findViewById(R.id.editText1);
        }
    public void vypocet (View v) {

        int[] k = new int[12];
        int[] j = new int[5];
        k[1] = 1; k[2] = 4; k[3] = 4; k[4] = 0; k[5] = 2; k[6] = 5; k[7] = 0;
        k[8] = 3; k[9] = 6; k[10] = 1; k[11] = 4; k[12] = 6;
        j[1] = 4; j[2] = 2; j[3] = 0; j[4] = 6; j[5] = 4;
        String[] d = new String[7];
        d[1]= "Sobota";
        d[2] = "Nedele"; d[3] = "Pondeli";
        d[4] = "Utery"; d[5] = "Streda"; d[6] = "Ctrvtek";
        d[7] = "Patek";
        int  rokD= Integer.parseInt(rok.getText().toString());
        int mesicD = Integer.parseInt(mesic.getText().toString());
        int denD = Integer.parseInt(den.getText().toString());

dělám takovou apku do které vložíš datum¨od roku 1753 do 2199 a vypadne ti den v týdnu

 
Nahoru Odpovědět
17.2.2016 8:12
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Vítězslav Škrabal
pocitac770:17.2.2016 8:57
  1. Indexy v poli začínají od 0, ne od 1.
  2. Jde plnit stylem
String[] pole = {"Sobota", "Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek"};
  1. Když pracuješ s datem a časem, tak zpíš zkus použít nějaké knihovny přímo k tomu určené...
 
Nahoru Odpovědět
17.2.2016 8:57
Avatar
Afrodisiakum
Člen
Avatar
Afrodisiakum:17.2.2016 9:05

Jak píše počítač770, pro práci s datem lze využít knihovny. V případě androidu asi Calendar, který ti po nastavení parametrů typu rok, měsíc a den může vrátit přímo den v týdnu a vyhneš se těm polím, které tam máš.

 
Nahoru Odpovědět
17.2.2016 9:05
Avatar
Vítězslav Škrabal:17.2.2016 15:37

**Zdroják **

package com.example.kalendar;



import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {
        EditText rok,mesic,den,vys;
    TextView vy;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                rok = (EditText)findViewById(R.id.editText3);
                mesic = (EditText)findViewById(R.id.editText2);
                den = (EditText)findViewById(R.id.editText1);
                vys = (EditText)findViewById(R.id.editText4);
        }
    public void vypocet (View v) {

        int[] k = new int[12];
        int[] j = new int[5];
        k[1] = 1; k[2] = 4; k[3] = 4; k[4] = 0; k[5] = 2; k[6] = 5; k[7] = 0;
        k[8] = 3; k[9] = 6; k[10] = 1; k[11] = 4; k[12] = 6;
        j[1] = 4; j[2] = 2; j[3] = 0; j[4] = 6; j[5] = 4;
        String[] d = new String[7];
        d[1]= "Sobota";
        d[2] = "Nedele"; d[3] = "Pondeli";
        d[4] = "Utery"; d[5] = "Streda"; d[6] = "Ctrvtek";
        d[7] = "Patek";
        int  rokD= Integer.parseInt(rok.getText().toString());
        int mesicD = Integer.parseInt(mesic.getText().toString());
        int denD = Integer.parseInt(den.getText().toString());
      int c= (int)(rokD /100)*100;
      int xr = rokD - c;
      int xm = (int) xr /4;
      {
      if ((rokD / 4) <   (rokD /4)){

      }
      else {
          k[1]= 0;k[2] =3;
      }
      }
      int a = ((xr + xm + k[mesicD])) + (j[(int)c / 100 - 16] + denD);
      int x = a - 7 * (int)(a / 7) + 1;
      vys.setText(d[x]);
    }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.main, menu);
                return true;
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                // Handle action bar item clicks here. The action bar will
                // automatically handle clicks on the Home/Up button, so long
                // as you specify a parent activity in AndroidManifest.xml.
                int id = item.getItemId();
                if (id == R.id.action_settings) {
                        return true;
                }
                return super.onOptionsItemSelected(item);
        }
}

Do emulátoru to dostanu ale jakmile stisknu tlačítko vypocet
Chyby

02-17 09:09:16.793: D/AndroidRuntime(4372): Shutting down VM
02-17 09:09:16.798: E/AndroidRuntime(4372): FATAL EXCEPTION: main
02-17 09:09:16.798: E/AndroidRuntime(4372): Process: com.example.kalendar, PID: 4372
02-17 09:09:16.798: E/AndroidRuntime(4372): java.lang.IllegalStateException: Could not execute method of the activity
02-17 09:09:16.798: E/AndroidRuntime(4372):     at android.view.View$1.onClick(View.java:3970)
02-17 09:09:16.798: E/AndroidRuntime(4372):     at android.view.View.performClick(View.java:4598)
02-17 09:09:16.798: E/AndroidRuntime(4372):     at android.view.View$PerformClick.run(View.java:19268)
02-17 09:09:16.798: E/AndroidRuntime(4372):     at android.os.Handler.handleCallback(Handler.java:738)
02-17 09:09:16.798: E/AndroidRuntime(4372):     at android.os.Handler.dispatchMessage(Handler.java:95)
02-17 09:09:16.798: E/AndroidRuntime(4372):     at android.os.Looper.loop(Looper.java:135)
02-17 09:09:16.798: E/AndroidRuntime(4372):     at android.app.ActivityThread.main(ActivityThread.java:5070)
02-17 09:09:16.798: E/AndroidRuntime(4372):     at java.lang.reflect.Method.invoke(Native Method)
02-17 09:09:16.798: E/AndroidRuntime(4372):     at java.lang.reflect.Method.invoke(Method.java:372)
02-17 09:09:16.798: E/AndroidRuntime(4372):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836)
02-17 09:09:16.798: E/AndroidRuntime(4372):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631)
02-17 09:09:16.798: E/AndroidRuntime(4372): Caused by: java.lang.reflect.InvocationTargetException
02-17 09:09:16.798: E/AndroidRuntime(4372):     at java.lang.reflect.Method.invoke(Native Method)
02-17 09:09:16.798: E/AndroidRuntime(4372):     at java.lang.reflect.Method.invoke(Method.java:372)
02-17 09:09:16.798: E/AndroidRuntime(4372):     at android.view.View$1.onClick(View.java:3965)
02-17 09:09:16.798: E/AndroidRuntime(4372):     ... 10 more
02-17 09:09:16.798: E/AndroidRuntime(4372): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=12; index=12
02-17 09:09:16.798: E/AndroidRuntime(4372):     at com.example.kalendar.MainActivity.vypocet(MainActivity.java:31)
02-17 09:09:16.798: E/AndroidRuntime(4372):     ... 13 more
02-17 09:09:20.481: I/Process(4372): Sending signal. PID: 4372 SIG: 9

Já snad nepochopím jak psát aplikace pro android tento program vyšel v takové velkém sešitu "Domluvte se s počítačem "ještě pře revolucí v basicu podařilo se mi to převést do php skriptu který mám na svém frehostingu , PHP , Delphi, C# jsem trochu pochopil ale na toto jsem asi krátký a za druhé se mi u toho nechce sedět hodiny díky

 
Nahoru Odpovědět
17.2.2016 15:37
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Vítězslav Škrabal
pocitac770:17.2.2016 15:50

Jak jsem ti říkal. Pole (a v programování snad všechno) má indexy od 0 po velikost - 1 (v tvém případě od 0 po 11), ty se snažíš doplnit do pole hodnotu na pozici 12, což je kvůli velikosti nemožné. Pokud děláš takové "začátečnické" chyby + docela zvláštní postupy při programování (neefektivní, zdlouhavé apod.), tak bych si doporučil nejprve přečíst zdejší rubriku o Javě, viz zde: http://www.itnetwork.cz/java

Editováno 17.2.2016 15:50
 
Nahoru Odpovědět
17.2.2016 15:50
Avatar
Vítězslav Škrabal:18.2.2016 13:49

Pomohlo zvýšení polí o 1 prvek už mi to fungovalo, ale chtěl jsem ještě upravit dizajn a uspořádat edittext a kdesi jsem udělal chybu viz příloha :-X a nemohu na to přijít řádek s logu nelze dát do schránky abych si ho mohl nechat přeložit pomůže mi někdo ? díky

 
Nahoru Odpovědět
18.2.2016 13:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.