Iván
Iván

Reputation: 39

How to open an activity using GridView. Android

I have a problem when opening a new activity, when clicking on element 0 sends me the activity but this does not show the content and does not send me some error, and adds the new activity in androidManifest.xml. I will leave my code:

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.ivann.diuxgridmain" >

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >
    <activity android:name=".MainActivity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".leon">
    </activity>


</application>

</manifest>

MainActivity.java

package com.example.ivann.diuxgridmain;

import android.content.Intent;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
GridView androidGridView;

String[] gridViewString = {
        "Leon1", "Ave1", "Perro1", "Cara1", "Corazòn1", "Enojado1",
        "Leon2", "Ave2", "Perro2", "Cara2", "Corazòn2", "Enojado2",
        "Leon3", "Ave3", "Perro3", "Cara3", "Corazòn3", "Enojado3",

} ;
int[] gridViewImageId = {
        R.drawable.leon, R.drawable.bird, R.drawable.cachorro, R.drawable.fb, R.drawable.heart, R.drawable.angry,
        R.drawable.leon, R.drawable.bird, R.drawable.cachorro, R.drawable.fb, R.drawable.heart, R.drawable.angry,
        R.drawable.leon, R.drawable.bird, R.drawable.cachorro, R.drawable.fb, R.drawable.heart, R.drawable.angry,


};

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

    CustomGridViewActivity adapterViewAndroid = new CustomGridViewActivity(MainActivity.this, gridViewString, gridViewImageId);
    androidGridView=(GridView)findViewById(R.id.grid_view_image_text);
    androidGridView.setAdapter(adapterViewAndroid);
    androidGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int i, long id) {
             Intent intent=null;
            switch (i){
                case 0:
// I think here is the error *******
                    intent  = new Intent(MainActivity.this, leon.class);
                    startActivity(intent);
                    break;
            }
            Toast.makeText(MainActivity.this, "GridView Item: " + gridViewString[+i ], Toast.LENGTH_LONG).show();
        }
    });

}

}

leon.java

package com.example.ivann.diuxgridmain;

import android.app.Activity;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

/**
 * Created by ivann on 09/06/2017.
 */

public class leon extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
        setContentView(R.layout.leonactividad);

    }
}

Upvotes: 1

Views: 220

Answers (3)

mesor
mesor

Reputation: 11

Button or ImageButton has a higher priority level than itemView. If your item view contains those, it might be the reason, and you can use TextView/ImageView instead.

Upvotes: 1

Patrick R
Patrick R

Reputation: 6857

Because you use also PersistableBundle in onCreate method and PersistableBundle use from API Level 21. So you can replace onCreate method as below:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.leonactividad);

    }

Upvotes: 1

Dileep Patel
Dileep Patel

Reputation: 1988

just remove

this

 @Override
public void onCreate(Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
    super.onCreate(savedInstanceState, persistentState);
    setContentView(R.layout.leonactividad);

}

with

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.leonactividad);

}

Upvotes: 1

Related Questions