J'ai un fragment et dans ce fragment, j'ai un bouton qui peut appeler une autre activité

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

  // Inflate the layout for this fragment
  View view = inflater.inflate(R.layout.fragment_test_fragment, container, false);

  Button button = (Button) view.findViewById(R.id.button2);
  button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          Intent i = new Intent(getActivity(), AnotherPage.class);
          startActivity(i);
        }
    });

Maintenant, cela fonctionne très bien.

Mais maintenant, je veux faire la même chose mais dans un TabHost que j'ai créé dans ce fragment.

Alors, comment appeler getActivity() dans mon onglet?

J'ai essayé de faire:

public class tab_two_graph extends AppCompatActivity {

  View v;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tab_two_graph);

     Intent intent = getParent().getIntent();
     v = intent.getParcelableExtra("view");

    Button b = (Button) findViewById(R.id.button2);
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           Intent i = new Intent(v.getActivity(), Alert_main_page.class);
            startActivity(i);
        }
    });

  }

Mais cela jette juste des erreurs.

0
Johnathan Logan 25 janv. 2017 à 10:44

4 réponses

Meilleure réponse

Juste pour ajouter plus d'informations aux réponses ici.

Vous n'êtes pas obligé de réussir une activité pour démarrer une autre activité. Vous devez passer un contexte, accessible en utilisant tab_two_graph.this. C'est pourquoi ce qui suit fonctionne:

startActivity(new Intent(tab_two_graph.this, Alert_main_page.class));
1
Jackspicer 25 janv. 2017 à 08:13

Vous devez l'appeler avec l'activité en cours, pas votre vue. Vous pouvez donc l'appeler en utilisant:

Button b = (Button) findViewById(R.id.button2);
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           Intent i = new Intent(tab_two_graph.this, Alert_main_page.class);
            startActivity(i);
        }
    });

Veuillez lire à l'adresse Démarrer une autre activité.

1
ישו אוהב אותך 25 janv. 2017 à 07:51

La classe publique tab_two_graph étend "AppCompatActivity" <<<<<

Essaye ça

Intent i = new Intent(tab_two_graph.this, Alert_main_page.class);
            startActivity(i);
1
배준모 25 janv. 2017 à 07:53

Essaye ça

Intent i = new Intent(((<YourActivityName>) getActivity()), AnotherPage.class);
            startActivity(i);
1
AbhayBohra 25 janv. 2017 à 08:04