Activity para Fragment

Bom dia para todos! Bom já pesquisei em tudo que jeito não achei o realmente o que quero é bem simples. Tenho uma Activity e nela já tenho os valores em mãos como exemplo:

@Override

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
   setSupportActionBar(toolbar);

    String teste1 = "ola";
    String teste2 = "ola2";
}

Tenho que passar o valor teste1 e teste2 para sua fragment e isso que não consigo fazer

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Declarando o Fragment
    ApresentacaoFragmentView = inflater.inflate(R.layout.fragment_apresentacao, container, false);

    // Aqui é a condição para pegar os valores teste1 e teste 2 
   
    return ApresentacaoFragmentView;
}

Olá, fragment está no xml da activity? poste o xml da activity.

não este valor não esta no xml é apenas repassar o valor da Activity para fragment e este valor aparecerá uma mensagem (Toast.makeTest) no fragment

Me referi ao arquivo R.layout.activity_main, poste o código dele, pois tem formas diferentes de passar dados para um fragment, poste sua Activity por completo, e o Fragment também.

Mais uma coisa, onde você está exibindo esse fragment? dentro da Activity? Como criou a instancia do mesmo? sem o código não dá pra saber.

O Fragment esta dentro da Activyt, as rolagem funcionam tudo certo já esta com Adapter e tudo

Bom, não tenho os códigos para saber como está fazendo. Dessa forma tente uma das opções:

1 - Se você está criando a instancia do Fragment via código e usando FragmentTransaction para coloá-lo dentro da activity, use setArguments para passar os dados para ele. E no Fragment use getArguments() para pegar os dados.

2 - Se o seu Fragment estiver declarado dentro do XML da activity e você tiver a instância do mesmo obtida via getFragmentById ou getFragmentByTag, crie um método público ex: setMeuDado e passe os dados para o fragment.

Boa Sorte, não sou adivinho :unamused:.

Xml do Content_main

<?xml version="1.0" encoding="utf-8"?>

<android.support.v4.view.ViewPager
    android:id="@+id/view_pagermain"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Este é o xml do layout do fragment tem apenas um TextView para aparecer o valor transportado estou fazendo apenas um teste para ver como funciona

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:id="@+id/textView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="40px"
    android:textStyle="bold"
    android:text="EM CONSTRUÇÃO"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_marginRight="14dp"
    android:layout_marginEnd="14dp" />

Deixa eu entender,

Você tem um ViewPager na sua activity e quer mostrar várias páginas, cada página é um fragment, certo? Se sim poste o código da Activity pra ver como você criou seu PagerAdapter.

Este o Adapter decidir trabalhar com esse pois o baseadapter é mais para coisa robusta como é apenas um teste então usei o Adapter

public class AdapterFragmentmain extends FragmentPagerAdapter {

private String[] strmtabtitles;


public AdapterFragmentmain(FragmentManager fm, String[] mtabtitles) {
    super(fm);
    // Setando os fragments
    this.strmtabtitles = mtabtitles;
}

// Retornando os fragment
@Override
public Fragment getItem(int position) {

    switch (position) {
        case 0:
            return new ApresentacaoFragment();
        case 1:
            return new PrecoprodFragment();
        default:
            return null;
    }
}

// contando as views(paginas) mesma quantidade de fragments
@Override
public int getCount() {

    return this.strmtabtitles.length;
}

@Override
public CharSequence getPageTitle(int position) {

    return this.strmtabtitles[position];
}

}

isso cada pagina é uma fragment(Total de duas Fragments) que estão dentro da Activity
Este é a activity

public class MainActivity extends AppCompatActivity {

private TabLayout tabLayout;
private ViewPager viewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    // Declarando os valores
    String teste1 = "ola";
    String teste2 = "ola2";
    // Declarando tablayout e viewpager
    tabLayout = (TabLayout) findViewById(R.id.tabopcaomain);
    viewPager = (ViewPager) findViewById(R.id.view_pagermain);

    viewPager.setAdapter(new AdapterFragmentmain(getSupportFragmentManager(), getResources().getStringArray(R.array.titles_tabmain)));
    tabLayout.setupWithViewPager(viewPager);
}

}

esta e a Fragment que tem que receber o valor teste1 e teste2

Seguinte, do jeito que seu adapter está fica muito difícil passar dados para os fragments, já que eles são criados dentro do adapter.

Vou dar a minha sugestão, externalize a criação dos Fragments, isso vai deixar seu adapter mais reusável.

public class AdapterFragmentmain extends FragmentPagerAdapter {

private String[] strmtabtitles;
private List<Fragment> fragments;

public AdapterFragmentmain(FragmentManager fm, List<Fragment> fragments, String[] mtabtitles) {
    super(fm);
    // Setando os fragments
    this.fragments = fragments;
    this.strmtabtitles = mtabtitles;
}

// Retornando os fragment
@Override
public Fragment getItem(int position) {

    return fragments.get(position);
}

// contando as views(paginas) mesma quantidade de fragments
@Override
public int getCount() {

    return this.strmtabtitles.length;
}

@Override
public CharSequence getPageTitle(int position) {

    return this.strmtabtitles[position];
}
}

Na sua activity faça assim:

protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    Bundle argumentos = new Bundle();

    argumentos.putString("meuDado", "ABCDEFG")

    ApresentacaoFragment apresentacao =  new ApresentacaoFragment();
    apresentacao.setArguments(argumentos);

    // Ou passe direto via metodo
    PrecoProdFragment preco = new PrecoprodFragment();
    preco.setMeuDado("MEU DADO")

    AdapterFragmentmain meuAdapter = new AdapterFragmentmain(getSupportFragmentManager(), Arrays.asList(apresentacao, preco), new String[]{"Apresentacao", "Precos"})
    meuPager.setAapter(meuAdapter);
 }

Estou usando apenas uma fragment para pegar o valor que vem da Activity, sabendo como faz um o resto para passar para outra eu mato a questão.

O caminho é o que passei na resposta.

Valeu vou analisar e dou retorno, muito obrigado.

Já fiz o que está tentando fazer, basicamente você tem uma tela de lançamento de venda ou pedido daí em uma aba você deve ter os dados da venda e na outra os itens. Uma dica é estudar o ciclo de vida dos fragments. Veja esse Tutorial vai ajudar.

Sempre que for perguntar forneça em detalhes o que quer fazer e de preferência poste os códigos.

Não é bem isso, pois o que da para entender como se eu tivesse querer passar os valores de uma fragment para outra Fragment e na verdade o valor é fixo na Activity e apenas repassar para a fragment, entendeu.

Entendi, eu entendi o que quer fazer (já fiz isso várias vezes), veja os códigos que te passei respondem exatamente isso. Um fragment não se comunica diretamente com o outro, somente via Activity.

Andrauss muito obrigado pela explicação deu certo. Como você falou o detalhe do problema esta no meu adapter que estava restrigindo ao seguir os seus conceitos deixando igual ao seu adapter esta normal vou deixar a resposta como ficou caso alguém venha ter o mesmo problema.
Acitivity como ficou:

public class MainActivity extends AppCompatActivity {
private TabLayout tabLayout;
private ViewPager viewPager;

@Override

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// Declarando tablayout e viewpager
tabLayout = (TabLayout) findViewById(R.id.tabopcaomain);
viewPager = (ViewPager) findViewById(R.id.view_pagermain);
//
ApresentacaoFragment apresentacaofragment = new ApresentacaoFragment();
    // Declarando o valor
    Bundle bundlemain = new Bundle();
    bundlemain.putString("TESTE1", "olá");
    // Passando os dados
    apresentacaofragment.setArguments(bundlemain);
    // Pager e o tab
    AdapterFragmentmain adapterfragmentmain = new AdapterFragmentmain(getSupportFragmentManager(), Arrays.asList(apresentacaofragment, precoprodfragment), new String[]{"APRESENTAÇÃO", "PREÇOS(R$)"});
    viewPager.setAdapter(adapterfragmentmain);
    tabLayout.setupWithViewPager(viewPager);
 }
}

Como ficou o Fragment que irá receber o valor:

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Declarando o Fragment
ApresentacaoFragmentView = inflater.inflate(R.layout.fragment_apresentacao, container, false);
// Novo Bundle
Bundle bundleapresentacao = getArguments();
String valor = bundleapresentacao.getString("TESTE1");
return ApresentacaoFragmentView;
}