PDA

View Full Version : [Java] Aggiungere azioni ai bottoni


blackeyes972
12-01-2013, 14:07
Salve spero sia l'area giusta dove postare, mi sto' avvicinando alla programmazione android sono veramente digiuno. Per farlo uso l'adt e ho visto un paio di video tutorial su youtube. Volevo creare una semplice applicazione composta da tre bottoni:

Sito web: cliccandolo dovrebbe semplicemente rimandare ad un indirizzo preimpostato

Feed Rss: cliccandolo dovrebbe aprire un file di feed prevalentemente generato da wordpress (all'interno dell'applicazione)

About dove riportare semplicemente delle note relative all'applicazione.

Ora creare il layout è abbastanza intuitivo e piuttosto semplice,

Ho creato l'interfaccia grafica :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
* * xmlns:tools="http://schemas.android.com/tools"
* * android:layout_width="match_parent"
* * android:layout_height="match_parent"
* * tools:context=".MainActivity" >

* * <Button
* * * * android:id="@+id/button1"
* * * * android:layout_width="wrap_content"
* * * * android:layout_height="wrap_content"
* * * * android:layout_alignParentTop="true"
* * * * android:layout_centerHorizontal="true"
* * * * android:layout_marginRight="14dp"
* * * * android:layout_marginTop="35dp"
* * * * android:text="@string/sito_web" />

* * <Button
* * * * android:id="@+id/button2"
* * * * android:layout_width="wrap_content"
* * * * android:layout_height="wrap_content"
* * * * android:layout_alignLeft="@+id/button1"
* * * * android:layout_below="@+id/button1"
* * * * android:layout_marginTop="43dp"
* * * * android:text="@string/Feed_Rss" />

* * <Button
* * * * android:id="@+id/button3"
* * * * android:layout_width="wrap_content"
* * * * android:layout_height="wrap_content"
* * * * android:layout_alignLeft="@+id/button2"
* * * * android:layout_below="@+id/button2"
* * * * android:layout_marginTop="73dp"
* * * * android:text="@string/About" />
* *

</RelativeLayout>

e ho cominciato a scrivere qualche riga di codice
package com.example.alex;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {
Button button1, button2, button3;


* * @Override
* * protected void onCreate(Bundle savedInstanceState) {
* * * * super.onCreate(savedInstanceState);
* * * * setContentView(R.layout.activity_main);
* * * * button1 = (Button) findViewById (R.id.button1);
* * * * button2 = (Button) findViewById (R.id.button2);
* * * * button3 = (Button) findViewById (R.id.button3);
* * * * button1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

}
});
* * * * button2.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

}
});
* * * * button3.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

}
});
* * }

* * @Override
* * public boolean onCreateOptionsMenu(Menu menu) {
* * * * // Inflate the menu; this adds items to the action bar if it is present.
* * * * getMenuInflater().inflate(R.menu.activity_main, menu);
* * * * return true;
* * }
* *
}

dove ho dichiarato le tre variabili button, poi ho usato il findViewById per fare in modo che quando clicco su un bottone android "sappia" che ho premuto proprio quello ed infine ho creato un listner dove dovro' scrivere quello che vorrei far succedere quando clicco su un bottone.


non riesco pero' ad assegnare ai pulsanti le azioni da effettuare quando vengono premuti.

wingman87
13-01-2013, 19:59
Non me ne intendo molto di android, ho letto solo un po' di teoria, quindi scusa se la mia risposta è un po' vaga.
Per il primo bottone dovresti creare un Intent, puoi vedere la risposta a questa domanda su stackoverflow per quello che ti serve:
http://stackoverflow.com/questions/2201917/how-can-i-open-a-url-in-androids-web-browser-from-my-application
Invece per gli altri due dovrai creare delle Activity distinte con la loro View. Al click su un bottone passerai all'Activity appropriata. In questa risposta c'è un esempio:
http://stackoverflow.com/questions/4186021/how-to-start-new-activity-on-button-click
A quanto vedo ora anche in questo caso dovrai creare degli Intent, però stavolta mi sembra di capire che l'Activity che si aprirà è specificata dai parametri.

banryu79
14-01-2013, 07:58
@balckeyes972: se stai imparando a programmare in Android ti segnalo questa utile risorsa -> http://www.vogella.com/

blackeyes972
14-01-2013, 11:00
Non me ne intendo molto di android, ho letto solo un po' di teoria, quindi scusa se la mia risposta è un po' vaga.
Per il primo bottone dovresti creare un Intent, puoi vedere la risposta a questa domanda su stackoverflow per quello che ti serve:
http://stackoverflow.com/questions/2201917/how-can-i-open-a-url-in-androids-web-browser-from-my-application
Invece per gli altri due dovrai creare delle Activity distinte con la loro View. Al click su un bottone passerai all'Activity appropriata. In questa risposta c'è un esempio:
http://stackoverflow.com/questions/4186021/how-to-start-new-activity-on-button-click
A quanto vedo ora anche in questo caso dovrai creare degli Intent, però stavolta mi sembra di capire che l'Activity che si aprirà è specificata dai parametri.Grazie ora faccio qualche prova

@banryu79 grazie

blackeyes972
15-01-2013, 11:30
Non me ne intendo molto di android, ho letto solo un po' di teoria, quindi scusa se la mia risposta è un po' vaga.
Per il primo bottone dovresti creare un Intent, puoi vedere la risposta a questa domanda su stackoverflow per quello che ti serve:
http://stackoverflow.com/questions/2201917/how-can-i-open-a-url-in-androids-web-browser-from-my-application
Invece per gli altri due dovrai creare delle Activity distinte con la loro View. Al click su un bottone passerai all'Activity appropriata. In questa risposta c'è un esempio:
http://stackoverflow.com/questions/4186021/how-to-start-new-activity-on-button-click
A quanto vedo ora anche in questo caso dovrai creare degli Intent, però stavolta mi sembra di capire che l'Activity che si aprirà è specificata dai parametri.
Allora per far aprire il browser web ho risolto cosi: @Override
public void onClick(View v) {
// Apre un link specificato nel browser
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.sitoweb.info"));
startActivity(browserIntent);
}
});

e ovviamente funziona. Mi piacerebbe capire se è possibile fare in modo che il sito venga apertp all'interno dell'applicazione, ma non è fondamentale.
Per le altre due funzioni sono ancora piuttosto in difficoltà...

blackeyes972
15-01-2013, 12:54
Mi spiego meglio con lo stesso principio ovviamente sono riuscito a lanciare il file rss generato da wordpress ma ovviamente non è formattato, quindi viene lanciato a video solo lo schema xml. Come faccio a renderlo leggibile?

wingman87
15-01-2013, 13:36
Mi spiace ma non so aiutarti oltre, quello che posso fare è cercare delle soluzioni che potrebbero funzionare ma penso sia meglio aspettare che risponda qualcuno che questi argomenti li ha già affrontati.

Ti lascio questo link che dovrebbe spiegare diverse soluzioni al tuo problema:
http://stackoverflow.com/questions/1253788/simple-rss-parser-for-android

blackeyes972
15-01-2013, 15:43
Mi spiace ma non so aiutarti oltre, quello che posso fare è cercare delle soluzioni che potrebbero funzionare ma penso sia meglio aspettare che risponda qualcuno che questi argomenti li ha già affrontati.

Ti lascio questo link che dovrebbe spiegare diverse soluzioni al tuo problema:
http://stackoverflow.com/questions/1253788/simple-rss-parser-for-android
lo avevo visto grazie ma ancora non sono riuscito a capirci molto..
In compenso ho capito come creare la pagina about mediante un nuovo layout
button3.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
setContentView(R.layout.credits);Solo che adesso vorrei fare in modo che alla pressione del tasto back non esca dall'applicazione ma mi riporti alla schermata principale dell'applicazione...

blackeyes972
15-01-2013, 17:39
Sono riuscito a capire come far tornare indietro magari è utile a qualcuno
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Riporta alla schermata precedente alla pressione di Back
if (keyCode == KeyEvent.KEYCODE_BACK ) {
Intent loadmain = new Intent(MainActivity.this, MainActivity.class);
startActivity(loadmain);
MainActivity.this.finish();
return true;
}

return super.onKeyDown(keyCode, event);
} Spero che qualcuno possa darmi un aiuto su come fare in modo che il sito internet venga aperto direttamente nell'applicazione e non nel browser e come leggere e formattare un feed rss proveniente da wordpress sempre all'interno dell'applicazione

banryu79
16-01-2013, 12:19
Spero che qualcuno possa darmi un aiuto su come fare in modo che il sito internet venga aperto direttamente nell'applicazione e non nel browser e come leggere e formattare un feed rss proveniente da wordpress sempre all'interno dell'applicazione
Non ho mai programmato sotto Android, però è chiaro che se non vuoi usare il browser di default per aprire la pagina web ma vuoi che sia visualizzata nella tua applicazione ti serve un componente in grado di fare quello che fa il browser.
Controlla se esiste un componente del genere (distribuito con la libreria/framework che stai usando).

Ad esempio in 5 min. di ricerca ho trovato questo (magari è quello che ti serve):
https://developer.android.com/guide/webapps/webview.html

blackeyes972
16-01-2013, 13:28
Non ho mai programmato sotto Android, però è chiaro che se non vuoi usare il browser di default per aprire la pagina web ma vuoi che sia visualizzata nella tua applicazione ti serve un componente in grado di fare quello che fa il browser.
Controlla se esiste un componente del genere (distribuito con la libreria/framework che stai usando).

Ad esempio in 5 min. di ricerca ho trovato questo (magari è quello che ti serve):
https://developer.android.com/guide/webapps/webview.html

Sembra proprio di si grazie