studio programacion herramientas fundamentos con avanzado aplicaciones android android-activity android-preferences preferenceactivity

programacion - manual de android en pdf



Lanzar nueva actividad desde PreferenceActivity (5)

Buen dia amigos. Tengo una actividad de preferencia, está llena de un archivo XML. Cuando presionamos un elemento, debemos iniciar una nueva actividad. ¿Cómo hacerlo? ¿Qué debo escribir en XML-file o en la clase Java?


Gradle Builders, ¡mira por aquí!

Si está utilizando gradle over ant como herramienta de compilación, y declaró una applicationId dentro de android .

[build.gradle]: android { defaultConfig { ... applicationId "com.overriding.package.name" } ... }

¡Esto sobrescribirá el valor que haya declarado en AndroidManifest.xml android:package como el identificador único de su aplicación!

[AndroidManifest.xml] <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.my.package"> <activity android:name=".settings.MyActivity"/> </manifest>

¡El <intent> debería tener en cuenta ambos nombres de paquete!

<Preference android:title="Some Title" android:summary="Some Description"> <intent android:targetPackage="com.overriding.package.name" android:targetClass="com.my.package.settings.MyActivity/> </Preference>


Dado que está utilizando las preferencias xml, puede agregar código directamente en el xml:

<Preference android:title="Some Title" android:summary="Some Description"> <intent android:action="android.intent.action.VIEW" android:targetPackage="com.package.name" android:targetClass="com.package.name.ActivityName" /> </Preference>


Debe registrar onClickListener en la vista en la que desea iniciar la actividad. Luego, dentro de este método, solo necesita invocar la actividad con un intento. Algo como esto:

Intent intent = new Intent(this, ActivityToLaunch.class); // Start boardgame startActivity(intent);


Después de agregar preferencias usando

addPreferencesFromResource(R.xml.preferences);

encuentre su preferencia que desee establecer enClick usando

findPreference("foo_bar_pref");

y definirlo lanzando como

Preference fooBarPref = (Preference) findPreference("foo_bar_pref");

Luego puede establecer fácilmente su onClick usando

fooBarPref.setOnPreferenceClickListener (new OnPreferenceClickListener()){...}

Puedes comenzar tu nueva actividad (usando un Intento) dentro de ese oyente.


Este es un buen tutorial para agregar preferencias dinámicamente ... luego tienes que personalizarlo a tu manera.

En XMl:

<Preference android:key="key" android:title="See Android Market"></Preference>

En la clase de Java:

Preferences preferences=findPreference("key"); preferences.setIntent(new Intent(Intent.ACTION_VIEW,Uri.parse("https://market.android.com/")));

O

import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.DialogPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceCategory; import android.preference.PreferenceScreen; import android.widget.LinearLayout; import android.widget.ListView; public class SettingsActivity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* Some initializations */ LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); ListView listView = new ListView(this); listView.setId(android.R.id.list); listView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT, 1)); layout.addView(listView); this.setContentView(layout); /* Preferences time! (we build the preferences) */ Preference version = getPreference("My School Manager", "Version 2.0",null); Preference author = getPreference("Author", "Balu", null); Preference marketLink = getPreference("Android market","View all my apps :)",new Intent(Intent.ACTION_VIEW, Uri.parse("http://market.android.com/"))); CheckBoxPreference check = new CheckBoxPreference(this); check.setTitle("Checkbox"); check.setSummary("Example of checkbox"); DialogPreference license = new MyDialogPreference(this, "License","This is the license for...bla bla"); /* Now we add the preferences to the preference screen */ PreferenceScreen preferenceScreen = this.getPreferenceManager() .createPreferenceScreen(this); addPreferenceCategory(preferenceScreen, "Preferences Tutorial",version, author, marketLink, check, license); this.setPreferenceScreen(preferenceScreen); } private boolean addPreferenceCategory(PreferenceScreen preferenceScreen, String titleCategory, Preference... preferences) { boolean addPreference = false; for (Preference preference : preferences) { if (preference != null) addPreference = true; } if (addPreference) { PreferenceCategory preferenceCategory = new PreferenceCategory(this); preferenceCategory.setTitle(titleCategory); preferenceScreen.addPreference(preferenceCategory); for (Preference preference : preferences) { if (preference != null) preferenceCategory.addPreference(preference); } return true; } else return false; } private Preference getPreference(String title, String summary, Intent intent) { Preference pref = new Preference(this); pref.setTitle(title); pref.setSummary(summary); if (intent != null) pref.setIntent(intent); return pref; } public class MyDialogPreference extends DialogPreference { public MyDialogPreference(Context context, String title, String text) { super(context, null); this.setTitle(title); this.setDialogMessage(text); } }

}