简体   繁体   中英

what I am doing wrong with my adapter?

I am trying to do a simple spinner with with 4 options, I create an adapter and set it to the spinner, but when I test it with the android emulator just appear the next error:

05-06 00:43:56.948: E/AndroidRuntime(831): FATAL EXCEPTION: main
05-06 00:43:56.948: E/AndroidRuntime(831): java.lang.RuntimeException: Unable to start activity ComponentInfo{economico.mx.uv/economico.mx.uv.MainActivity}: java.lang.NullPointerException
05-06 00:43:56.948: E/AndroidRuntime(831):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
05-06 00:43:56.948: E/AndroidRuntime(831):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
05-06 00:43:56.948: E/AndroidRuntime(831):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-06 00:43:56.948: E/AndroidRuntime(831):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
05-06 00:43:56.948: E/AndroidRuntime(831):  at android.os.Handler.dispatchMessage(Handler.java:99)
05-06 00:43:56.948: E/AndroidRuntime(831):  at android.os.Looper.loop(Looper.java:137)
05-06 00:43:56.948: E/AndroidRuntime(831):  at android.app.ActivityThread.main(ActivityThread.java:5103)
05-06 00:43:56.948: E/AndroidRuntime(831):  at java.lang.reflect.Method.invokeNative(Native Method)
05-06 00:43:56.948: E/AndroidRuntime(831):  at java.lang.reflect.Method.invoke(Method.java:525)
05-06 00:43:56.948: E/AndroidRuntime(831):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
05-06 00:43:56.948: E/AndroidRuntime(831):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
05-06 00:43:56.948: E/AndroidRuntime(831):  at dalvik.system.NativeStart.main(Native Method)
05-06 00:43:56.948: E/AndroidRuntime(831): Caused by: java.lang.NullPointerException
05-06 00:43:56.948: E/AndroidRuntime(831):  at economico.mx.uv.MainActivity.onCreate(MainActivity.java:36)
05-06 00:43:56.948: E/AndroidRuntime(831):  at android.app.Activity.performCreate(Activity.java:5133)
05-06 00:43:56.948: E/AndroidRuntime(831):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
05-06 00:43:56.948: E/AndroidRuntime(831):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
05-06 00:43:56.948: E/AndroidRuntime(831):  ... 11 more

This is my code:

package economico.mx.uv;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import android.os.Build;

public class MainActivity extends ActionBarActivity {
private Spinner criterioBusq;
private EditText camBusq;

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

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }

        camBusq=(EditText)findViewById(R.id.camBusq);
        criterioBusq=(Spinner)findViewById(R.id.criterioBusq);
        String []opciones={"Campus","Facultad","Nombre","Cargo"};
        ArrayAdapter adaptador = new ArrayAdapter(this,android.R.layout.simple_spinner_item, opciones);
        criterioBusq.setAdapter(adaptador);
    }

I have no idea what I am doing wrong, so thank you beforehand for read it.

Do not load the fragment first as its always get your Bundle null first so it will always load the PlaceholderFragment and then it will go for finding the EditText and your other views which are obviously not in your PlaceholderFragment layout file. So it will throw the nullpointer error.

Try out as below:

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

       camBusq=(EditText)findViewById(R.id.camBusq);
        criterioBusq=(Spinner)findViewById(R.id.criterioBusq);
        String []opciones={"Campus","Facultad","Nombre","Cargo"};
        ArrayAdapter adaptador = new ArrayAdapter(this,android.R.layout.simple_spinner_item, opciones);
        criterioBusq.setAdapter(adaptador);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM