Okhelp.cz

Recepty, články, nápady, programování. Dříve dum-zahrada, finance, internet a know-how.okhelp.cz Pro lepší výsledky hledání používejte i diakritiku.

Windows set Environment Variables - Java path


AD MOB

How set JAVA path to Environment Variables on Windows (7)
Select Start menu > Computer > System Properties > Advanced System Settings(properties).
Then open Advanced tab > Environment Variables and add a new system variable JAVA_HOME that points to your JDK folder, for example

 C:\Program Files\Java\jdk1.8.0_05

397LW NO topic_id




AD

Další témata ....(Topics)


228

Eclipse "id cannot be resolved or is not a field” error Android | eclipse-id-cannot-be-resolved-or-is-not-a-field-error-android


"id cannot be resolved or is not a field” error
If you copy project to workspace or some code from other project you can get this error.

Try remove or add import your R file:

import com.example.app.R


Check xml files.
Clean project by menu Project-Clean

Maybe you have to create new project end copy old source files to new project folders.
353

Android Fragment onAttach deprecated | android-fragment-onattach-deprecated



// Context instead Activity as a parameter
@Override
public void onAttach(Context context) {
    super.onAttach(context);

    Activity a;

    if (context instanceof Activity){
        a=(Activity) context;
    }

}

OnNoteClickedListener listener;
/* old emxample of usage
	@Override
	public void onAttach(Activity activity) {
		super.onAttach(activity);
		try {
			listener = (OnNoteClickedListener) activity;
		} catch (ClassCastException e) {
			throw new ClassCastException(activity.toString()
					+ " must implement OnNoteClickedListener");
		}
	}
*/
// new version of code
	@Override
	public void onAttach(Context context) {
		super.onAttach(context);

		Activity a;

		if (context instanceof Activity){
			a=(Activity) context;
			try {
				listener = (OnNoteClickedListener) a;
			} catch (ClassCastException e) {
				throw new ClassCastException(a.toString()
						+ " must implement OnNoteClickedListener");
			}
		}

	}


284

WAV Sound Quality is Poor Android MediaPlayer | wav-sound-quality-is-poor-android-mediaplayer


Try convert WAV file to MP3 format for example by Audacity sound editor and replay:
//audacity.sourceforge.net/help/faq_i18n?s=install&i=lame-mp3


MediaPlayer mp  = MediaPlayer.create(getApplicationContext(), R.raw.mymp3file);
mp.setLooping(true);
mp.start();

375

3. Fragments Tutorial HeadlinesFragment – Czech language | 3-fragments-tutorial-headlinesfragment-czech-language


Dil 3. HeadlinesFragment.java
V 1. dílu jsme se něco dozvěděli od XML souborech
V 2. dílu jsme rozebrali MainActivity.java


V tomto dílu si rozebereme záludnosti v HeadlinesFragment.java souboru.
Používáme příklad i zip porojekt z https://developer.android.com/training/basics/fragments/creating.html Pozorně si jej nastudujte.

package com.example.android.fragments;

import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
// pokud chceme aby byla aplikace spustitelná i v nižších verzích Androidu
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

// extends ListFragment důležité pro základní obsluhu ListView atd.
public class HeadlinesFragment extends ListFragment {
	// zajistí zpětné odesílání zprav - zde zachytí kliknutí uživatele na položku
        // v ListView - seznamu položek 
    OnHeadlineSelectedListener mCallback;

    // pro odposlouchávání zpráv v ListView a odesílání do MainActivity.java
    public interface OnHeadlineSelectedListener {
        /**
		funkce je volána onArticleSelected z HeadlinesFragment když uživatel
                klikne na item v ListView - položku seznamu -
		Tělo funkce je v MainActivity!!! Tam proběhnou potřebné úkony.
                Například výměna fragmentů atd. */
        public void onArticleSelected(int position);
    }

	/** Protože je HeadlinesFragment rozšířením (extends) ListFragment
	používá funkci onCreate(). 
        ArticleFragment extends Fragment bude používat onCreateView() 
	*/
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        
		// Zde si pohlídáme verze Androidu a přiřadíme jim 
                // předdefinovanou šablonu XML souboru
		// Je to důležité pokud chceme využívat více možností, 
                // které nové verze nabízejí 
		// například podbarvení vybrané položky seznamu
        int layout = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ?
                android.R.layout.simple_list_item_activated_1 : android.R.layout.simple_list_item_1;

		
		// zde se vytovoří jednotlivé položky seznamu v ListView
		// Pole vypadá takto:  
		// static String[] Headlines = {"Article One","Article Two"};
		// položky tedy ponesou názvy ze String[] Headlines
		// Teoreticky si menší pole položek můžete dát i sem pro jednodušší editaci
        setListAdapter(new ArrayAdapter<String>(getActivity(), layout, Ipsum.Headlines));
    }

    @Override
    public void onStart() {
        super.onStart();

		
		// Pokud se bude zobrazovat dual-panel 
                // (pro tablety, větší obrazovky) 
                // například je dobré
		// když bude zvýrazněna vybraná položka setChoiceMode(ListView.CHOICE_MODE_SINGLE);
		// Toto provádíme v onStart(), kdy máme přístup k listview
        if (getFragmentManager().findFragmentById(R.id.article_fragment) != null) {
            getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        }
    }

	// onAttach() bude asi deprecated, tak můžete vyzkoušet
	/* 
			@Override
		public void onAttach(Context context) {
			super.onAttach(context);

			Activity a;

			if (context instanceof Activity){
				a=(Activity) context;
			}
		}
	*/
// nebo pohledat něco na inetu 
	
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);

		
		// Zde přiřadíme odposlouchávání zprávy kliknutí na položku ListView 
		// a zpětnou vazbu s MainActivity.
		// Pokud se to nepodaří, bude zaznamenáno a předáno dál chybové hlášení
        try {
            mCallback = (OnHeadlineSelectedListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement OnHeadlineSelectedListener");
        }
    }
    /** kliknuto na položku ListView */
    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
                // long id se bude hodit například při obsluze sql.databází
        
		// Upozorní - předá zprávu MainActivity.java, že uživatel 
		// klikl na položku a odešle i pozici v seznamu
                mCallback.onArticleSelected(position);
        
        
		// getListView().setItemChecked(position, true); 
		// má zajistit podbarvení 
		// - zvýraznění vybrané položky,
		// ale mi to nefungovalo, tak jsem ještě znovu přidal,
		// které je už v onStart() a už to funguje jak má
		// Možná nějaká záludnost v mém telefonu :(
		getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
		 
        getListView().setItemChecked(position, true);
    }
}
374

2. Fragments Tutorial MainActivity - Czech language | 2-fragments-tutorial-mainactivity-czech-language


Díl 2.
V prvním dile jsme se něco dozvěděli od XML souborech


a taky jaké označení procesoru pro rok 2016 - Intel® VT-x, Intel® EM64T - musí mít PC pro programování v Android Studiu, tedy hlavně pro spuštění emulátoru - virtuálního telefonu, tabletu atd. jinak nebudete moci testovat aplikace na nejnovějších zařízeních, které tento emulátor umí napodobit.
Dole na stránce odkazu je uvedena minimální konfigurace PC, ale protože Android je již plnokrevný OS, který se neustále rozrůstá, tak tyto hodnoty jsou prakticky nedostatečné a je třeba osadit PC nejnovějšími komponentami.



Používáme příklad i zip porojekt z https://developer.android.com/training/basics/fragments/creating.html

V tomto díle si rozebereme záludnosti v souboru MainActivity.java.

// název balíčku
package com.example.android.fragments;

import android.os.Bundle;
// knihovny nutné pro spuštění na starších zařízeních s verzí Androidu API 4
// API verze a příslušné číslo verze Androidu jsou zde 
// https://cs.wikipedia.org/wiki/Historie_verz%C3%AD_Android
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;

// HeadlinesFragment je třída se seznamem položek, která díky
// OnHeadlineSelectedListener bude vracet události kliknutí na položku
// Pokud při pokusech přídáme jiný soubor se seznamem, je nutno změnit i název HeadlinesFragment 
// na nový název, jinak nic neodchytíme!!!!
public class MainActivity extends FragmentActivity 
        implements HeadlinesFragment.OnHeadlineSelectedListener {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
		// tady se rozhoduje zda si vezme XML pro  malé obrazovky, jen s jedním panelem, nebo 
        // velké se dvěma panely
		// Rozhoduje si o tom systém sám, ale můžeme to ovlivnit a pdstrčit mu 
		// i dvoupanel pro testování - viz předchozí díl //android.okhelp.cz/1-fragments-tutorial-xml-czech-language/
        setContentView(R.layout.news_articles);
		//// VELKE OBRAZOVKY - layout-large - dual panel /////////
		// pokud si systém vybere news_articles.xml z layout-large (dual panel)
		// budou fragmenty automaticky naloděny do tagů fragment, kde jsou 
		// uvedeny absolutní cesty fragmentů!!!! 
		// např. fragment android:name="com.example.android.fragments.HeadlinesFragment"
		// si nalodí sám fragment s linkami - položkami ListView.
		// Podobně se sám obslouží při nalodění i fragment s obsahem
		// fragment android:name="com.example.android.fragments.ArticleFragment"
		// Tyto tagy fragment, s absolutní cestou k fragmentu, 
                // neumožňují výměnu fragmentu za běhu aplikace!!!!!
		// Dynamickou výměnu fragmenut však umožňují kontejnery tagu FrameLayout

 
		//// MALE OBRAZOVKY - jen jeden fragment //////
		// Zkontrolujeme, který XML byl naloděn, pokud je activováno R.id.fragment_container
		// značí to, že byl vybrán XML ze složky layout, kde je pouze jeden panel a do něj
		// vložíme pouze fragment se seznamem, tedy HeadlinesFragment a pak po vybrání položky 
		// v něm otevřeme ArticleFragment.java s vypsáním obsahu článku atd.
        if (findViewById(R.id.fragment_container) != null) {
		    
			// Pokud obnovujeme seznam položek vrácením se z předchozího stavu - fragmentu
            // pak nepotřebujeme nic dělat a měl bychom opustit tento if, jinak
            // dojde překrývání fragmentů, tedy uvídíme překryv textů a dalších elementů původního
			// fragmentu fragmentem novým proto uděláme podmínku:
            if (savedInstanceState != null) {
                return;
            }

            // vytvoříme instanci HeadlinesFragment s položkami seznamu v ListView
            HeadlinesFragment firstFragment = new HeadlinesFragment();


			// pokud chceme vložit speciální instrukce pro start odebrané z nějakého Intent,
			// odchytíme je zde a vložíme je jako argumenty. Pak je při startu fragmentu
			// možno odchytit v onCreate()
            firstFragment.setArguments(getIntent().getExtras());

			// vložíme fragment do fragment_container FrameLayout-u  
			// který umožňuje výměnu fragmentů
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.fragment_container, firstFragment).commit();
        }
    }

	// uživatel klikl na nějakou položku ze seznamu v HeadlinesFragment!
    public void onArticleSelected(int position) {
       

        // vybereme určitý článek dle pozice položky vybrané v seznamu ListView
		// Provedeme kontrolu jestli je naloděn dual panel, nebo jen jednoduchý
        ArticleFragment articleFrag = (ArticleFragment)
                getSupportFragmentManager().findFragmentById(R.id.article_fragment);
		
        if (articleFrag != null) {
			// VELKÉ OBRAZOVKY
            // protože je aktivní id R.id.article_fragment z news_articles.xml v layout-large složce
			// víme, že aplikace používá dual-panel, dva fragmenty vedle sebe

            
			// zde se volá funkce která je obsažena v třídě v souboru ArticleFragment.java
			// a provede patřičné příkazy, v našem případě se 
                        // vypíše obsah článku z třídy Ipsum.java
			// sloužící jako úložiště textů přiřazených k jednotlivým
                        // pozicím -  položkám seznamu ListView
            articleFrag.updateArticleView(position);

        } else {
			// MALÉ OBRAZOVKY
			// jen JEDEN-PANEL se zobrazuje - vybrán soubor news_articles.xml v layout složce
			// musíme vyměnit fragemnty !!!!

            
			// Vytvoříme fragment a doplníme argumenty - hodnoty, poslané např. z HeadlinesFragment.java
			// jedná se nám především o pozici položky, na kterou bylo kliknuto v ListView
			// tato pozice bude určující pro výběr obsahu pro ArticleFragment
            ArticleFragment newFragment = new ArticleFragment();
            Bundle args = new Bundle();
            args.putInt(ArticleFragment.ARG_POSITION, position);
            newFragment.setArguments(args);
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

 			// Zde vyměníme původní fragment HeadlinesFragment novým fragmentem s obsahem článku atd.
			// Můžeme vyměnit fragment za jiný, protože id fragment_container v layout/news_articles.xml je tagu FrameLayout
            transaction.replace(R.id.fragment_container, newFragment);
			// addToBackStack umožní uživateli vrátit se zpět na seznam položek v HeadlinesFragment.java
            transaction.addToBackStack(null);

            
			// celou transakci předáme ke schválení :)
            transaction.commit();
        }
    }
}


Editace: 2014-05-13 14:55:36
Počet článků v kategorii: 397
Url:windows-set-environment-variables-java-path

AD
11 Share
Share
Tweet