Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] putExtras entre SherlockListActivity e Fragments

//activity principal...
public class MainActivity extends SherlockFragmentActivity {
    public List<Meses> meses;
    private AdapterDaLista adapterlista;
    private DataBaseAdapter dbAdapter;
    private Context context;
    private ListView listView;
    private String mesclicado;

    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    @SuppressLint("NewApi")
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // requestWindowFeature(Window.FEATURE_NO_TITLE);
        // this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        setContentView(R.layout.main);

        carregaMes();
       
        getFragmentManager().beginTransaction().replace(R.id.botoes_fragments, new LogoInicio()).commit();
       
        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> adapter, View selectedItemView, int posicao,
                    long id) {
               
                Meses item = (Meses) listView.getAdapter().getItem(posicao);
                mesclicado = item.getNomemes().toString();
                Toast.makeText(getApplication(), mesclicado, 50).show();
               
                Botoes dpf = new Botoes();
                android.app.FragmentTransaction beginTransaction = getFragmentManager().beginTransaction();
                beginTransaction.replace(R.id.botoes_fragments, dpf, Botoes.class.getCanonicalName());
                       
//                Bundle args = new Bundle();
//                args.putString("NOMES", mesclicado);
//                dpf.setArguments(args);
                               
                beginTransaction.addToBackStack("botoes_fragments");
               
                beginTransaction.commit();   

                // quando pego o ida da erro.
                //Toast.makeText(getApplication(), item.getIdmes(), 500).show();
               
            }
        });
    }// aqui fecha o oncreate

    public void carregaMes() {
        dbAdapter = new DataBaseAdapter();
        meses = dbAdapter.getLista(getApplicationContext());
        // meses = dbAdapter.getLista(context);

        adapterlista = new AdapterDaLista(this, meses);
        listView = (ListView) findViewById(android.R.id.list);
        listView.setAdapter(adapterlista);
    }
   



    public String getmesClicado() {
        // TODO Auto-generated method stub
                Toast.makeText(getApplication(), mesclicado + "metodo do retorno do click", 50).show();
        return mesclicado;
       
       
    }

   
   
    // barra do topo
    @Override
    public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
        com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
        return true;
    }

    public boolean onOptionsItemSelected(
            com.actionbarsherlock.view.MenuItem item) {

        switch (item.getItemId()) {
        case R.id.menu_refresh:

            // deleta do cache
            FileCache fc = new FileCache(this);
            fc.clear();

            ImageLoader il = new ImageLoader(this);
            il.clearCache();
            break;

        case R.id.menu_anexo:

            break;

        case R.id.menu_close:
            finish();
            break;

        }
        return true;
    }

}

//activity dos botoes
public class Botoes extends Fragment {
    private TextView mesclick;
    public List<Meses> meses;
    private String textlistview;
    private MainActivity mainActivity;
    private ImageButton bt_cosmetologia, bt_nutricao, bt_odonto, bt_veterinaria, bt_especialidades, bt_multimercado;
   
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState){
       
       
        View botoes = inflater.inflate(R.layout.botoes, null);
       
        this.bt_cosmetologia = (ImageButton) botoes.findViewById(R.id.imageCosmetologia);
        this.bt_nutricao = (ImageButton) botoes.findViewById(R.id.imageNutricao);
        this.bt_odonto = (ImageButton) botoes.findViewById(R.id.imageOdonto);
        this.bt_veterinaria = (ImageButton) botoes.findViewById(R.id.imageVeterinaria);
        this.bt_especialidades = (ImageButton) botoes.findViewById(R.id.imageEspecialidades);
        this.bt_multimercado = (ImageButton) botoes.findViewById(R.id.imageMultimercado);
        //ImageButton bt_multimercado = (ImageButton) botoes.findViewById(R.id.imageMultimercado);
       
        //recebedo putextras o valor do text view
//        textlistview = getActivity().getIntent().getStringExtra("NOMES");
       
       
       
       
        this.textlistview = mainActivity.getmesClicado();
        //textlistview = ((MainActivity) getSherlockActivity()).getmesClicado();
        this.mesclick = (TextView) botoes.findViewById(R.id.textViewMesClicado);
        this.mesclick.setText(textlistview);
       
       
   
       
       
       
        this.bt_cosmetologia.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // TODO Auto-generated method stub
               
                Intent inn = new Intent(getActivity(), ExibeGallery.class);
                startActivity(inn);
            }
        });
       
       
        this.bt_nutricao.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // TODO Auto-generated method stub

            }
        });
       
       
        this.bt_odonto.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // TODO Auto-generated method stub
               

            }
        });
   
        return botoes;
    }//aqui fecha o oncreate

    private MainActivity getSherlockActivity() {
        // TODO Auto-generated method stub
        return null;
    }
}

//caso queira os xmls so pedir

Em 7 de janeiro de 2013 09:19, Marcos Reis | .Mobi <marcos.reis@pontomobi.com.br> escreveu:
Desculpe,

Acho que não fui claro.

Manda por favor o codigo .java da sua Main e do seu fragment, estou com uma pequena suspeita mas so preciso confirmar..

Abraço



-- 
Cordialmente,
Marcos Reis
Analista de Sistemas / Android

Pontomobi
Any screen,
Anywhere™

São Paulo | Rio | BH | Recife | London





On Jan 7, 2013, at 10:14 , Felippe dos Santos Ferreira <felippenasuacasa@gmail.com> wrote:

public class MainActivity extends SherlockFragmentActivity

olha o xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:layout_width="248dp"
        android:layout_height="fill_parent"
        android:padding="5dp" >

        <ListView
            android:id="@+id/android:list"
            android:layout_width="223dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="2dp"
            android:background="@color/corner"
            android:divider="@color/list_divider"
            android:clickable="true"
            android:focusableInTouchMode="true"
            android:footerDividersEnabled="true"
            android:headerDividersEnabled="true"
            android:cacheColorHint="#00000000"
            android:listSelector="@color/list_selector"
            android:dividerHeight="1dp"
            android:fadeScrollbars="false"
            android:padding="10dp"
            android:textColor="@color/text_bg"
            tools:listitem="@layout/umitemdalistameses" >
        </ListView>
    </LinearLayout>

    <FrameLayout
        android:id="@+id/botoes_fragments"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </FrameLayout>

</LinearLayout>


Em 7 de janeiro de 2013 09:10, Marcos Reis | .Mobi <marcos.reis@pontomobi.com.br> escreveu:
Grande Felipe,

Me responde uma coisa,  a sua MainActivity é a activity onde vc exibe o seu fragment?

Pq o cast q vc esta fazendo tem q ser exatamente para a activity que esta "sobreposta" pelo fragment senão vai dar erro mesmo.

Qualquer coisa é só falar.


-- 
Cordialmente,
Marcos Reis
Analista de Sistemas / Android

Pontomobi
Any screen,
Anywhere™

São Paulo | Rio | BH | Recife | London





On Jan 7, 2013, at 08:59 , Felippe dos Santos Ferreira <felippenasuacasa@gmail.com> wrote:

cara agora da um erro de nullpointexpeption que não consigo achar...

Em 6 de janeiro de 2013 14:28, Marcos Reis | .Mobi <marcos.reis@pontomobi.com.br> escreveu:
A velho foi mal.. acabei de ver aqui.. não tinha prestado atenção não.. mais assim, pelo poco q eu entendo o putExtra vc so vai conseguir passar quando vc evocar um startActvity como vc ta fazendo com fragment você pode fazer assim:

1 - declare um atributo String de escopo de classe que será o item clicado.
2 - crie um método getMesClicado() que retorne o atributo do passo 1.
3 - no seu fragment utilize para recuperar o valor o seguinte trecho:

    String mesClicadoActivityPai = ((SuaActiviyPrincipal) getSherlockActivity()).getMesClicado();

    this.mesclick.setText(mesClicadoActivityPai);

Acredito que dessa forma vc vai conseguir resolver seu problema, eu tive que fazer algo semelhante em um app que eu desenvolvi e consegui resolver o problema assim.

T+




-- 
Cordialmente,
Marcos Reis
Analista de Sistemas / Android

Pontomobi
Any screen,
Anywhere™

São Paulo | Rio | BH | Recife | London




On 06/01/2013, at 15:22, Felippe dos Santos Ferreira <felippenasuacasa@gmail.com> wrote:

o erro é que não passa nada para a outra activity por put extras...


uma activity é ... MainActivity extends SherlockFragmentActivity(aqui te a lista clicada) a outra é Botoes extends Fragment (aqui recebe o item da lista clicada)

Em 6 de janeiro de 2013 15:12, Marcos Reis | .Mobi <marcos.reis@pontomobi.com.br> escreveu:
Qual o erro que ta te retornando.




-- 
Cordialmente,
Marcos Reis
Analista de Sistemas / Android

Pontomobi
Any screen,
Anywhere™

São Paulo | Rio | BH | Recife | London




On 06/01/2013, at 15:09, Felippe dos Santos Ferreira <felippenasuacasa@gmail.com> wrote:

mudei um pouco o codigo da uma olhada....

//assim passa por put extras
        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> adapter, View selectedItemView, int posicao,
                    long id) {
               
                Meses item = (Meses) listView.getAdapter().getItem(posicao);
                mesclicado = item.getNomemes().toString();
                Toast.makeText(getApplication(), mesclicado, 50).show();
               
                Botoes dpf = new Botoes();
                android.app.FragmentTransaction beginTransaction = getFragmentManager().beginTransaction();
                beginTransaction.replace(R.id.botoes_fragments, dpf, Botoes.class.getCanonicalName());
                       
                Bundle args = new Bundle();
                args.putString("NOMES", mesclicado);
                dpf.setArguments(args);
               
                beginTransaction.addToBackStack("botoes_fragments");
               
                beginTransaction.commit();   

                // quando pego o ida da erro.
                //Toast.makeText(getApplication(), item.getIdmes(), 500).show();
               
            }
        });


//assim tento receber
        textlistview = getActivity().getIntent().getStringExtra("NOMES");
        this.mesclick = (TextView) botoes.findViewById(R.id.textViewMesClicado);
        this.mesclick.setText(textlistview);

Em 6 de janeiro de 2013 15:00, Marcos Reis | .Mobi <marcos.reis@pontomobi.com.br> escreveu:
Cara me corrija se eu estiver errado, mas se este trecho do seu código estiver assim mesmo não irá funcionar nunca:

public class Botoes extends Fragment {
    private TextView mesclick;
    private String textlistview = null;

        //recebedo putextras o valor do text view
        textlistview = getActivity().getIntent().getStringExtra("NOMES");
        this.mesclick = (TextView) botoes.findViewById(R.id.textViewMesClicado);
        this.mesclick.setText("textlistview");

Repare que o seu mesclick.setText você está passando o nome do atributo em forma de string "textListView" você deveria passar:

this.mesclick.setText(textListView);

Acredito que dessa forma iria funcionar.

Qualquer coisa é só falar.

Abraços.



-- 
Cordialmente,
Marcos Reis
Analista de Sistemas / Android

Pontomobi
Any screen,
Anywhere™

São Paulo | Rio | BH | Recife | London




On 06/01/2013, at 12:06, Felippe dos Santos Ferreira <felippenasuacasa@gmail.com> wrote:

public class Botoes extends Fragment {
    private TextView mesclick;
    private String textlistview = null;

        //recebedo putextras o valor do text view
        textlistview = getActivity().getIntent().getStringExtra("NOMES");
        this.mesclick = (TextView) botoes.findViewById(R.id.textViewMesClicado);
        this.mesclick.setText("textlistview");


--
 
 


--
 
 


--
 
 


--
 
 


--
 
 


--
 
 


--
 
 


--
 
 

--
 
 

--
 
 

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário