Como pegar conteúdo de um TextView que está em um Fragment

833 views
Skip to first unread message

Diogo Henrique

unread,
Jan 30, 2013, 6:53:56 PM1/30/13
to androidb...@googlegroups.com
Olá pessoal, tenho um PagerAdapter, e na sua ActionBar eu coloquei um botão de "Salvar" ai quando o usuário clicasse eu pegaria apenas a informação de um TextView. Mais quando faço...

public boolean onOptionsItemSelected(MenuItem item) {

if (item.toString().equals("Salvar")) {

AguaFragment af = (AguaFragment) getSupportFragmentManager().findFragmentById(R.id.frag_1);
//Log.i("teste", "sera  ?" + af.getString(R.id.tv_ml));
//Log.i("teste", "sera  ???" + af.getResources().getString(R.id.tv_ml));
//View v = af.getView(); //.findViewById(R.id.tv_ml);
//Log.i("teste", "sera  ????" + af.toString());  
//Log.i("teste", "sera  ????" + tv.getText().toString());
Log.i("teste", "sera  ??" + af.getTipo());
}

return true;
}


Da um NullPointer... o af está vindo nulo...

Meu Fragment está assim...

public final class AguaFragment extends Fragment {
    private static final String KEY_CONTENT = "TestFragment:Content";

    public static AguaFragment newInstance(String content) {
        AguaFragment fragment = new AguaFragment();
        fragment.mContent = content;

        return fragment;
    }

    private String mContent = "???";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) {
            mContent = savedInstanceState.getString(KEY_CONTENT);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        
   
    View view = inflater.inflate(R.layout.consumir_agua_fragment,container, false);
    TextView tv_ml = (TextView) view.findViewById(R.id.tv_ml);

    tv_ml.setText(mContent);
   
        return view;
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString(KEY_CONTENT, mContent);
    }
    
    
    
    public String getTipo(){
    View view = getView();
    if(view != null){
    TextView tv = (TextView) view.findViewById(R.id.tv_ml);
    return tv.getText().toString();
    }
    return "não";
    }

Minha duvida e... porque está vindo null ? estou usando o PagerIndicador do Jake.

O Log é esse...

01-30 23:45:29.210: E/AndroidRuntime(655): java.lang.NullPointerException
01-30 23:45:29.210: E/AndroidRuntime(655): at br.com.android.noweight.agua.ConsomeAgua.onOptionsItemSelected(ConsomeAgua.java:80)
01-30 23:45:29.210: E/AndroidRuntime(655): at android.support.v4.app._ActionBarSherlockTrojanHorse.onMenuItemSelected(_ActionBarSherlockTrojanHorse.java:119)
01-30 23:45:29.210: E/AndroidRuntime(655): at com.actionbarsherlock.ActionBarSherlock.callbackOptionsItemSelected(ActionBarSherlock.java:600)
01-30 23:45:29.210: E/AndroidRuntime(655): at com.actionbarsherlock.internal.ActionBarSherlockCompat.onMenuItemSelected(ActionBarSherlockCompat.java:533)
01-30 23:45:29.210: E/AndroidRuntime(655): at com.actionbarsherlock.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:738)
01-30 23:45:29.210: E/AndroidRuntime(655): at com.actionbarsherlock.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:148)
01-30 23:45:29.210: E/AndroidRuntime(655): at com.actionbarsherlock.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:879)
01-30 23:45:29.210: E/AndroidRuntime(655): at com.actionbarsherlock.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:510)
01-30 23:45:29.210: E/AndroidRuntime(655): at com.actionbarsherlock.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:145)
01-30 23:45:29.210: E/AndroidRuntime(655): at android.view.View.performClick(View.java:2408)
01-30 23:45:29.210: E/AndroidRuntime(655): at android.view.View$PerformClick.run(View.java:8816)
01-30 23:45:29.210: E/AndroidRuntime(655): at android.os.Handler.handleCallback(Handler.java:587)
01-30 23:45:29.210: E/AndroidRuntime(655): at android.os.Handler.dispatchMessage(Handler.java:92)
01-30 23:45:29.210: E/AndroidRuntime(655): at android.os.Looper.loop(Looper.java:123)
01-30 23:45:29.210: E/AndroidRuntime(655): at android.app.ActivityThread.main(ActivityThread.java:4627)
01-30 23:45:29.210: E/AndroidRuntime(655): at java.lang.reflect.Method.invokeNative(Native Method)
01-30 23:45:29.210: E/AndroidRuntime(655): at java.lang.reflect.Method.invoke(Method.java:521)
01-30 23:45:29.210: E/AndroidRuntime(655): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)




Diogo Henrique
(83)87344178
Rede Sociais: 




Ernani Joppert Pontes Martins

unread,
Jan 30, 2013, 7:13:49 PM1/30/13
to androidb...@googlegroups.com
Cara, pra descontrair, compartilhando um pensamento meu aqui, esses
logs de debug tão parecendo oração!

Rachei o bico com os será aqui! Sem querer julgar nem nada pois já
sofri da mesma maneira.

Infelizmente não tenho como ajudar, mas, essa valeu a semana...

Pode ser pura bobeira minha mas rachei o bico com isso, acho que ando
estressado demais!

Abraço!
> --
> You received this message because you are subscribed to the Google Groups
> "Android Brasil - Dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to androidbrasil-...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>

Maicon Strey

unread,
Jan 31, 2013, 5:28:16 AM1/31/13
to androidb...@googlegroups.com
Sobre o botão salvar, não sei qual o foco da tua aplicação mas recomendo a leitura do post que o Bruno Oliveira (do Google) fez no ano passado sobre esse tipo de prática:

Sobre o erro: por um acaso tu não estas com dois fragments utilizando o mesmo id ou algo do tipo?


Maicon Strey
Novo Hamburgo - RS - Brasil
------------------
------------------
Linux user: #525086


2013/1/30 Ernani Joppert Pontes Martins <jop...@gmail.com>

Diogo Henrique

unread,
Jan 31, 2013, 9:08:19 AM1/31/13
to androidb...@googlegroups.com
Estou usando um mesmo Fragment... eu só atualizo um TextView dentro dele, quando chegar em casa eu posto a View dele.
Ela está dentro de um PagerAdapter.

Diogo Henrique

unread,
Feb 2, 2013, 8:28:47 AM2/2/13
to androidb...@googlegroups.com
Desculpa a demora gente.... o print ta em anexo.
No lugar daquela gota na ActionBar eu tava afim de colocar um botão de Salvar.
O usuário iria escolher o copo dele e tal. Eu só preciso daquela informação que está no TextView...
E a melhor maneira ? outra maneira seria o usuário clicar diretamente no copo... o que vocês acham ?
print.png

Felippe dos Santos Ferreira

unread,
Feb 5, 2013, 9:19:00 AM2/5/13
to androidb...@googlegroups.com
Conseguiu??


pra saber esse elemento o qual quer pegar esta no Fragment, ou no FragmentActivity?

Diogo Henrique

unread,
Feb 5, 2013, 9:23:26 AM2/5/13
to androidb...@googlegroups.com
Está no Fragment... eu fui fazer outras coisas no APP mas ainda não consegui =/

Diogo Henrique
(83)87344178
Rede Sociais: 






2013/2/5 Felippe dos Santos Ferreira <felippen...@gmail.com>

Felippe dos Santos Ferreira

unread,
Feb 5, 2013, 9:33:13 AM2/5/13
to androidb...@googlegroups.com
tive probremas parecidos, fiqueis dias tentando e solucionei assim, no meu caso deu certo

fiz um metodo que retornava oque eu queria, ai no fragment eu chemei o metodo pegando seu retorno.


Reply all
Reply to author
Forward
0 new messages