Cyanogen
Cyanogen

Reputation: 3

onOptionsItemSelected(MenuItem item) opens wrong activity

I have a menu on action bar that should open a specific activity on click, im calling the activity that i want to open (MaininsertActivity.java) but the view i get to see its activity_main2.xml

MainActivity.java

    package com.example.bugdroid.trabalhoapp1;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.example.bugdroid.trabalhoapp1.modelo.Series;
import com.example.bugdroid.trabalhoapp1.modelo.Serie;

public class MainActivity extends AppCompatActivity {

    private ListView lv;

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

        lv = (ListView) findViewById(R.id.lista_series);

        Series Series = new Series();

        Serie exemplo = new Serie ("Thrones", "açao", 50, 10, 1900 );
        Series.getLista().add(exemplo);

        exemplo = new Serie("CSI", "Policial", 30, 20, 4);
        Series.getLista().add(exemplo);

        exemplo = new Serie("Flash", "aventura", 30, 20, 4);
        Series.getLista().add(exemplo);

        exemplo = new Serie("Vikings", "Historia", 3, 2, 4);
        Series.getLista().add(exemplo);

        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, Series.getLista());

        lv.setAdapter(adapter);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = this.getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();

        if(id == R.id.action_add) {
            Intent intent = new Intent(this, MaininsertActivity.class);
            startActivity(intent);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

MaininsertActivity.java

    package com.example.bugdroid.trabalhoapp1;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;

public class MaininsertActivity extends AppCompatActivity {

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

        EditText et = (EditText) findViewById(R.id.nomeSerie);
        String nomedaserie = et.getText().toString();

        Intent i = new Intent(this, Main2Activity.class);
        i.putExtra("nomeSerie", nomedaserie);
        startActivity(i);

    }
}

Main2Activity.java

    package com.example.bugdroid.trabalhoapp1;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;

import com.example.bugdroid.trabalhoapp1.modelo.Serie;

import java.util.ArrayList;

public class Main2Activity extends AppCompatActivity {

    String uriString;

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

            Intent i = getIntent();
            uriString = i.getStringExtra("nomeSerie");
    }
}

This is my project tree:

https://gyazo.com/e3cae13f1b62c2cb1442f377405ca55b

Upvotes: 0

Views: 172

Answers (5)

user2189878
user2189878

Reputation: 257

In the onCreate method of 'MaininsertActivity' , you are starting 'Main2Activity' with these lines:

 Intent i = new Intent(this, Main2Activity.class);
 i.putExtra("nomeSerie", nomedaserie);
 startActivity(i);

Thus the layout of MainActivity2 is visible on the screen - R.layout.activity_main2 .

Upvotes: 0

Sagar Chavada
Sagar Chavada

Reputation: 5269

you are passing intent in onCreate method thats why, remove your intent in your insertActivity. and try to put in button click

Upvotes: 0

shlomo
shlomo

Reputation: 11

that Because you calling in the onCreate in the MaininsertActivity to the Main2Activity class

Upvotes: 0

Android Geek
Android Geek

Reputation: 9225

Thats because you have called the Main2Activity in onCreate of MaininsertActivity,

Intent i = new Intent(this, Main2Activity.class);
        i.putExtra("nomeSerie", nomedaserie);
        startActivity(i);

so when you click on menu item it is firsty initiating the MaininsertActivity but as in OnCreate , there is another Intent, so it is forwading to MainA2ctivity.

Upvotes: 0

Shabbir Dhangot
Shabbir Dhangot

Reputation: 9121

because in onCreate() of MaininsertActivity you are starting Main2Activity. this is why you are seeing Main2Activity layout

Intent i = new Intent(this, Main2Activity.class);
i.putExtra("nomeSerie", nomedaserie);
startActivity(i);

because of this code you getting Main2Activity screen

Upvotes: 1

Related Questions