Kam zařadit kód ze třídy main aby se rozjel?

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod David751 5. 12. 2019 11:58

Ahoj, zkouším vytvořit jednoduchou aplikaci, která by mi mohla vytáhnou určitá data z webu a zobrazit je.

Pro příklad bych chtěl zobrazit title ze stránky WikiHow. Uvedený kód funguje v čistě v Javě v Intellij studiu.
Ale když ho zpustím v Android studiu, načte se jen původní přednastavené Hello World místo title("wikiHow - How to do anything").
Jsoup mám přidanou jako knihovnu, složky naimportované, vkládám do správného id. Program tyto příkazy nebere jako chybu.
Na zkoušku jsou zkoušel zapsat také čistý text. Ani ten se nenačte místo "Hello World". Takže se funkce main vůbec nezpustí.
Jenže kdybych dal kód z funkce main do funkce onCreate, program by hlásil chyby (nemohu za protected void onCreate(Bundle savedInstanceState) dát throws IOException.
Jak bych to mohl napsat aby se mi funkce main zpustila?
Děkuji

Zde je můj kód:

Kód: Vybrat vše
package com.example.jsouprun;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
//
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;


public class MainActivity extends AppCompatActivity {

    TextView Promena_TextViewTextView;

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

    public void main (String[] args) throws IOException{
        //Document d=Jsoup.connect(("https://www.wikihow.com/Main Page")).get();
        Document doc = Jsoup.connect("https://www.wikihow.com/Main-Page").get();
        String title = doc.title();
        System.out.println(title);

        Promena_TextViewTextView = Promena_TextViewTextView.findViewById(R.id.mojeid); 
//přiřazení proměné ke grafice
        Promena_TextViewTextView.setText(title);
        Promena_TextViewTextView.setText("ahoj");
        }
    }
David751
Kolemjdoucí

Odeslat příspěvekod Wikan 5. 12. 2019 14:49

V Javě nedělám, ale nestačilo by tam dát catch pro IOException a pak už tam to throws být nemusí?
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Nargon 5. 12. 2019 15:22

Tak nějak. Taky v javě nedělám a už vůbec ne v android krabičkách. Ale jako první mě taky napadlo tam dát sekci try..catch a případné chyby si sám odchytit (a ideálně i zobrazit uživateli), ale hlavně to neposílat dál do systému kde na to systém zareaguje leda tak, že ukončí aplikaci.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod Just_jo 8. 12. 2019 21:44

A co takto?
Kód: Vybrat vše
protected void onCreate(...
  setContentView(..
  try {
   main();
  } catch ( IOException e ) {}

public void main () ... // String[] args je zbytečné, když to nevyužíváš.


Do konzole se dá psát mnohem jednodušeji než System.out
Just_jo
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků