A compatibilidade da Barra de ação foi adicionada à biblioteca de suporte, revisão 18. Agora ela possui ActionBarActivity
classe para criar atividades com a Barra de ação em versões mais antigas do Android.
Existe alguma maneira de adicionar a Barra de Ação da biblioteca de suporte PreferenceActivity
?
Anteriormente eu usei ActionBarSherlock e ele tem SherlockPreferenceActivity
.
Respostas:
EDIT: No appcompat-v7 22.1.0, o Google adicionou a classe abstrata AppCompatDelegate como um delegado que você pode usar para estender o suporte do AppCompat a qualquer atividade.
Use-o assim:
Chega de hackers. Código extraído de AppCompatPreferenceActivity.java .
fonte
(ViewGroup) getWindow().getDecorView().getRootView()
No momento, não há como alcançar com o AppCompat. Eu abri um bug internamente.
fonte
PreferenceActivity
ser adicionadosActionBarCompat
?Consegui criar uma solução alternativa semelhante à usada pela Google Play Store. Link para a resposta original
Encontre o repositório GitHub: Aqui
Muito parecido com o seu próprio código, mas adicionou xml para permitir o título do conjunto:
Continuando a usar
PreferenceActivity
:settings_toolbar.xml :
SettingsActivity.java :
Result :
UPDATE (Compatibilidade com Gingerbread):
Conforme indicado aqui , os dispositivos Gingerbread estão retornando NullPointerException nesta linha:
CONSERTAR:
SettingsActivity.java :
Quaisquer problemas com o acima exposto me avise!
ATUALIZAÇÃO 2: SOLUÇÃO DE SOLUÇÃO
Como apontado em muitas notas de desenvolvimento
PreferenceActivity
, não suporta a coloração de elementos; no entanto, utilizando algumas classes internas, você pode conseguir isso. Isso é até que essas classes sejam removidas. (Funciona usando o appCompat support-v7 v21.0.3).Adicione as seguintes importações:
Em seguida, substitua o
onCreateView
método:Result:
AppCompat 22.1
O AppCompat 22.1 introduziu novos elementos coloridos, o que significa que não é mais necessário utilizar as classes internas para obter o mesmo efeito da última atualização. Em vez disso, siga isto (ainda substituindo
onCreateView
):TELAS DE PREFERÊNCIA NESTADAS
Muitas pessoas estão enfrentando problemas com a inclusão da barra de ferramentas em
<PreferenceScreen />
s aninhados. No entanto, encontrei uma solução! - Depois de muita tentativa e erro!Adicione o seguinte ao seu
SettingsActivity
:O motivo desse problema
PreferenceScreen
é que eles são baseados em uma caixa de diálogo de wrapper, portanto, precisamos capturar o layout da caixa de diálogo para adicionar a barra de ferramentas a ele.Sombra da barra de ferramentas
Por design, a importação de
Toolbar
não permite elevação e sombreamento em dispositivos anteriores à v21, portanto, se você deseja elevar o seu,Toolbar
precisará envolvê-lo emAppBarLayout
:`settings_toolbar.xml:
Não esquecendo de adicionar a biblioteca de suporte a design como uma dependência no
build.gradle
arquivo:Android 6.0
Eu investiguei o problema sobreposto relatado e não consigo reproduzi-lo.
O código completo em uso como acima produz o seguinte:
Se estiver faltando alguma coisa, entre em contato por meio deste repositório e investigarei.
fonte
:)
PreferenceActivity
tão difícil usar ??? isso deve economizar tempo. Eu também poderia fazer uma atividade regular e organizar manualmente todas as configurações em um layout linear. Fuuuuck!Foi encontrada uma implementação do PreferenceFragment com base no fragmento support-v4:
https://github.com/kolavar/android-support-v4-preferencefragment
Edit: Acabei de testar e está funcionando muito bem!
fonte
A integração
PreferenceActivity
com o ABC não é possível, pelo menos para mim. Tentei as duas possibilidades que encontrei, mas nenhuma funcionou:Opção 1:
ActionBarPreferenceActivity
se estendePreferenceActivity
. Quando você faz isso, fica restritoActionBarActivityDelegate.createDelegate(ActionBarActivity activity)
. Além disso, você precisa implementar oActionBar.Callbacks
que não está acessívelOpção 2:
ActionBarPreferenceActivity
se estendeActionBarActivity
. Esta abordagem requer reescrever um novo inteiroPreferenceActivity
,PreferenceManager
e pode serPreferenceFragment
que significa que você precisa ter acesso a aulas escondidos comocom.android.internal.util.XmlUtils
A solução para este só pode vir de Google devs implementar umActionBarWrapper
que pode ser adicionado a qualquer atividade.Se você realmente precisa de uma atividade preferencial, meu conselho por enquanto é
ActionBarSherlock
.No entanto, eu consegui implementá-lo aqui .
fonte
Antecedentes do problema:
O OP quer saber como podemos colocar
MenuItem
s naActionBar
daPreferenceActivity
para pré-Honeycomb porque biblioteca de suporte do Android tem um bug que não permite que isso aconteça.Minha solução:
Encontrei uma maneira muito mais limpa, do que o proposto anteriormente, de atingir a meta (e a encontrei no Android Docs ):
Agora faça o que você normalmente faria em seu
onOptionsItemSelected()
. Como faz parte do Android Docs, não tem efeitos colaterais.Feliz codificação. :)
Atualizar:
Essa solução não funciona mais se você estiver segmentando o Lollipop. Se você estiver usando AppCompat, esta resposta é o que você deveria procurar.
fonte
PreferencesActivity
não havia como colocar itensActionBar
, especialmente o botão Voltar. Minha resposta é uma boa solução para isso.:)
Eu era capaz de
android.app.Actionbar
usargetActionBar()
. Ele retornou um valor nulo no início ... depois fui ao manifesto e alterei o tema para:Então pude ter a barra de ação novamente. Estou assumindo que isso funcionará apenas para determinados níveis de compilação. Portanto, convém verificar o número da compilação ou verificar se o valor retornado é nulo.
Tudo bem para mim, porque o aplicativo no qual estou trabalhando é para
ICS/4.0
+.fonte
Agora a resposta oficial para esse problema foi lançada. É o Suporte de Preferências v7 / v14 biblioteca de .
Consulte Como usar a biblioteca de suporte de preferências v7 / v14? para a discussão de como usá-lo.
fonte