Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 4 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 01.03.13
Prihlásený: 27.03.24
Príspevky: 219
Témy: 49
Bydlisko: Sabinov
Príspevok NapísalOffline : 09.07.2015 16:26

Zdravím, nevedel by mi niekto poradiť s mojim problémom? Neviem aký parameter má byť v tom Context pri metóde MediaPlayer.create(Context, Uri). Ten MediaPlayer používam v jednej non-activity triede (MyCountDownTimer.class) a to je podľa mňa môj problém. Keď som najprv spravil normálne MainActivity.class a v nej vnorenú druhú triedu (MyCountDownTimer.class), tak som namiesto Context mohol písať getApplicationContext() a fungovalo to. Ale ak vytvorím samostatnú triedu, tak už getApplicationContext() nemôžem napísať a nejde mi to ani ak pošlem z prvej triedy Context ako parameter konštruktora do druhej triedy. Nevie niekto ako na to? :) prípadne aj nejaké dobré české/slovenské vysvetlenie Contextu? Vďaka :)
tu sú časti zdrojákov:
Kód:
public class MainActivity extends ActionBarActivity {

public TextView textviewTimer1;
private TextView textviewTimer2;
private MyCountDownTimer casovac1;
private MyCountDownTimer casovac2;
private int startTime = 10000;
public static final String FORMAT = "%02d:%02d";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textviewTimer1 = (TextView) findViewById(R.id.textViewTimer1);
    textviewTimer2 = (TextView) findViewById(R.id.textViewTimer2);

    textviewTimer1.setText("" + String.format(FORMAT, startTime/1000 / 60, ((startTime/1000) % 60)));
    textviewTimer2.setText("" + String.format(FORMAT, startTime/1000 / 60, ((startTime/1000) % 60)));

    casovac1 = new MyCountDownTimer(this, textviewTimer1, startTime, 200); //CHYBA TU (42. riadok)
    casovac2 = new MyCountDownTimer(this, textviewTimer2, startTime, 200);

}


Kód:
public class MyCountDownTimer extends CountDownTimer {

private Context context;

TextView textviewTimer;

public MyCountDownTimer(Context mContext, TextView textView, long startTime, long interval) {
    super(startTime, interval);
    context = mContext;
    textviewTimer = textView;
}

MediaPlayer mp3 = MediaPlayer.create(context, R.raw.three); //CHYBA TU (28. riadok)
MediaPlayer mp2 = MediaPlayer.create(context, R.raw.two);
MediaPlayer mp1 = MediaPlayer.create(context, R.raw.one);
MediaPlayer mpHorn = MediaPlayer.create(context, R.raw.airhorn);

...


a chybová hláška:
Kód:
07-08 22:17:08.259 22889-22889/? E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{com.martin.odpocitavaniepokus1/com.martin.odpocitavaniepokus1.MainActivity}: java.lang.NullPointerException
...
Caused by: java.lang.NullPointerException at android.media.MediaPlayer.create(MediaPlayer.java:677) at com.martin.odpocitavaniepokus1.MyCountDownTimer.(MyCountDownTimer.java:28) at com.martin.odpocitavaniepokus1.MainActivity.onCreate(MainActivity.java:42)


Offline

Užívateľ
Užívateľ
Android - MediaPlayer a Context

Registrovaný: 05.04.11
Príspevky: 1693
Témy: 50
Bydlisko: Žilina, Pop...
Príspevok NapísalOffline : 09.07.2015 18:33

Treba pouzivat Android dokumentaciu. http://developer.android.com/reference/android/content/Context.html Context je vlastne nieco co ti dovoluje pristup ku platformovo specifickym veciam, ako resources kde mas fonty, obrazky, stringy atd., ako ja spustanie novych aktivit a rozne ine veci. Keby si si precital dokumentaciu tak by si videl ze potomkom triedy Context je ContextWrapper a medzi jeho potomkami je aj Activity trieda.

Z toho je jasne ze Activita je vlastne sama sebou Context-om a preto v inej trieda, ktora nema napisane extends AppCompatActivity (ActionBarActivity je deprecated a nemal by si to pouzivat), teda nie je potomkom Contextu, tak sa tam ten Context nema ako objavit a musis ho posielat cez parametre konstruktora.

Tu sa dostavame k nejakym problemom a to ze Context moze zaniknut a mal by si pouzivat WeakReference<Context> http://docs.oracle.com/javase/7/docs/api/java/lang/ref/WeakReference.html

Dalej neviem co chces docielit podedenim CountDownTimer triedy ale posielat do triedy context, ktora by nic s contextom nemala mat spolocne je dost zly pristup. Ten error je nejaky divny skus si tam dat if podmienky nech to logne ci context, alebo textview je null a posli tu celu triedu :)







_________________
rMBP 13 2015
iPhone 7
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 01.03.13
Prihlásený: 27.03.24
Príspevky: 219
Témy: 49
Bydlisko: Sabinov
Príspevok Napísal autor témyOffline : 09.07.2015 22:42

no ten nápad s contextom som si vygooglil na stack overflow, ale zrejme to nebol presne môj prípad :) tu posielam obe triedy:
MainActivity.class
Kód:
public class MainActivity extends ActionBarActivity {

    public TextView textviewTimer1;
    private TextView textviewTimer2;
    private MyCountDownTimer casovac1;
    private MyCountDownTimer casovac2;
    private int startTime = 10000;
    public static final String FORMAT = "%02d:%02d";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textviewTimer1 = (TextView) findViewById(R.id.textViewTimer1);
        textviewTimer2 = (TextView) findViewById(R.id.textViewTimer2);

        textviewTimer1.setText("" + String.format(FORMAT, startTime/1000 / 60, ((startTime/1000) % 60)));
        textviewTimer2.setText("" + String.format(FORMAT, startTime/1000 / 60, ((startTime/1000) % 60)));

        casovac1 = new MyCountDownTimer(this, textviewTimer1, startTime, 200);
        casovac2 = new MyCountDownTimer(this, textviewTimer2, startTime, 200);

    }

    public void StartTimer1(View view) {
        casovac1.start();
    }

    public void StopTimer1(View view) {
        casovac1.cancel();
    }

    public void StartTimer2(View view) {
        casovac2.start();
    }

    public void StopTimer2(View view) {
        casovac2.cancel();
    }


}

MyCountDownTimer.class
Kód:
public class MyCountDownTimer extends CountDownTimer {

    boolean played1 = false;
    boolean played2 = false;
    boolean played3 = false;

    int sekundy;
    private Context context;

    TextView textviewTimer;

    public MyCountDownTimer(Context mContext, TextView textView, long startTime, long interval) {
        super(startTime, interval);
        context = mContext;
        textviewTimer = textView;
    }

    MediaPlayer mp3 = MediaPlayer.create(context, R.raw.three);
    MediaPlayer mp2 = MediaPlayer.create(context, R.raw.two);
    MediaPlayer mp1 = MediaPlayer.create(context, R.raw.one);
    MediaPlayer mpHorn = MediaPlayer.create(context, R.raw.airhorn);

    @Override
    public void onTick(long millisUntilFinished) {
        sekundy = (int) Math.ceil(millisUntilFinished / 1000.0);
        textviewTimer.setText("" + String.format(MainActivity.FORMAT, sekundy / 60, (sekundy % 60)));

        if (sekundy == 3 && played3 == false) {
            mp3.start();
            played3 = true;
        }
        if (sekundy == 2 && played2 == false) {
            mp2.start();
            played2 = true;
        }
        if (sekundy == 1 && played1 == false) {
            mp1.start();
            played1 = true;
        }
    }

    @Override
    public void onFinish() {
        textviewTimer.setText("00:00");
        mpHorn.start();
    }
}


Offline

Užívateľ
Užívateľ
Android - MediaPlayer a Context

Registrovaný: 05.04.11
Príspevky: 1693
Témy: 50
Bydlisko: Žilina, Pop...
Príspevok NapísalOffline : 13.07.2015 0:18

A tebe sa to vobec neda spustit, alebo to padne az po stlaceni tlacidla ? Kazdopadne skopiruj cely log a daj ho tu ako spoiler.
Este ma napadlo, vsade kde volas
Kód:
mpX.start();
skus najprv zavolat
Kód:
if(mpX != null) mpX.start();
Inak ti to pada na nejakom divnom riadku. Aky mas typ zvukov ?
Inak nedefinuj onclick metody v xml atributoch, pouzivaj anonymne bloky, alebo skus nieco taketo http://jakewharton.github.io/butterknife/







_________________
rMBP 13 2015
iPhone 7
Odpovedať na tému [ Príspevkov: 4 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. P: mediaplayer , dvd player

v Predám

8

746

21.03.2011 9:06

fatboy.zelo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. context.exe

v Ostatné programy

1

730

26.08.2021 14:28

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Java - na co je context?

v Assembler, C, C++, Pascal, Java

7

534

30.04.2014 10:15

XOLOO Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Fatal error: Using $this when not in object context

v PHP, ASP

6

464

26.04.2010 16:40

petanorech Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Android to Android migracia

v Ostatné programy

4

1072

16.07.2019 16:14

tatko Tom Zobrazenie posledných príspevkov

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie. Android

v Ostatné

2

655

19.06.2011 20:54

Bajzik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Android

v Android, iOS, Windows Phone (Mobile)

2

510

28.03.2013 8:32

Echo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Android

v Mobilné zariadenia

7

661

18.11.2010 14:56

Spartan.Ex Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Android ~160€

v Mobilné zariadenia

2

382

22.05.2015 21:07

cpt.chill Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Android hry

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Smartfóny a tablety

36

2328

09.07.2016 12:10

kllr007 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Lightroom android

v Mobilné zariadenia

0

448

15.02.2016 20:30

SpL1tt3r Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Android aplikacie

v Počítačové hry

1

338

24.04.2015 13:43

lacko4444122 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Symbian - Android

v Ostatné operačné systémy

3

2082

15.08.2010 18:46

Nanosonda Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Android - Launchery

v Smartfóny a tablety

3

296

24.08.2015 21:10

Yacko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Fotenie android

v Ostatné programy

16

596

02.05.2020 8:17

tatko Tom Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Android tablet

v Mobilné zariadenia

1

409

22.11.2015 0:22

liqua1 Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra