Android не сделает мое заявление

1

Может ли кто-нибудь сказать мне, почему этот простой код не работает? В первом действии у меня есть пользователь, который выбирает параметр, который отправляет arraylist для следующего действия. Он не будет делать утверждение else и силу закрывается. Спасибо, парни!

String[] quotes;

ArrayList<String> Dark = new ArrayList<String>();
ArrayList<String> Light = new ArrayList<String>();

Вот код

if (Dark.isEmpty()){

    Light = i.getStringArrayListExtra("light");
    quotes = Light.toArray(new String[Light.size()]);
} else {

    Dark = i.getStringArrayListExtra("dark");
    quotes = Dark.toArray(new String[Dark.size()]); 
};

вот как я его отправляю

 public void dark (View d){
    dark.add("Even 0 is a number, just leave him alone!");
    dark.add("Love is noting but a bad spell, cast onto your soul, never to be released into the wild...");
    dark.add("The end is near please do not make the same mistakes.");
    dark.add( "Jenna i love you, youre my little beandip, dive you!");
    dark.add( "cute hate but dont rate im no skate");
    dark.add("You will never live if you live a lie");
    Intent intent = new Intent(choose.this,Startme.class);
    intent.putStringArrayListExtra("dark",dark);
    startActivity(intent);
 }

public void light (View l) {
    light.add("Good ideas will come if you share your love");
    light.add("enter a world with no doubt, join god");
    light.add("come on, can you live a life");
    light.add( "where love is so is hate lol not");
    light.add( "watch me now!! go with me and join the lord");
    light.add("never be afrade of the darkness");

    Intent intent = new Intent(choose.this,Startme.class);
    intent.putStringArrayListExtra("light",light);
    startActivity(intent);
}

Журнал

07-30 17:41:33.457: E/AndroidRuntime(15638): FATAL EXCEPTION: main
07-30 17:41:33.457: E/AndroidRuntime(15638): java.lang.RuntimeException: Unable to start activity ComponentInfo{me.me.quote/me.me.quote.Startme}: java.lang.NullPointerException
07-30 17:41:33.457: E/AndroidRuntime(15638):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1696)
07-30 17:41:33.457: E/AndroidRuntime(15638):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1716)
07-30 17:41:33.457: E/AndroidRuntime(15638):    at android.app.ActivityThread.access$1500(ActivityThread.java:124)
07-30 17:41:33.457: E/AndroidRuntime(15638):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)
07-30 17:41:33.457: E/AndroidRuntime(15638):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-30 17:41:33.457: E/AndroidRuntime(15638):    at android.os.Looper.loop(Looper.java:130)
07-30 17:41:33.457: E/AndroidRuntime(15638):    at android.app.ActivityThread.main(ActivityThread.java:3806)
07-30 17:41:33.457: E/AndroidRuntime(15638):    at java.lang.reflect.Method.invokeNative(Native Method)
07-30 17:41:33.457: E/AndroidRuntime(15638):    at java.lang.reflect.Method.invoke(Method.java:507)
07-30 17:41:33.457: E/AndroidRuntime(15638):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
07-30 17:41:33.457: E/AndroidRuntime(15638):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
07-30 17:41:33.457: E/AndroidRuntime(15638):    at dalvik.system.NativeStart.main(Native Method)
07-30 17:41:33.457: E/AndroidRuntime(15638): Caused by: java.lang.NullPointerException
07-30 17:41:33.457: E/AndroidRuntime(15638):    at me.me.quote.Startme.onCreate(Startme.java:164)
07-30 17:41:33.457: E/AndroidRuntime(15638):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-30 17:41:33.457: E/AndroidRuntime(15638):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1660)
07-30 17:41:33.457: E/AndroidRuntime(15638):    ... 11 more

Вот полный код:

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.startquotes);

    Intent i = getIntent(); 

    if (Dark.isEmpty()){

        Light = i.getStringArrayListExtra("light");
        quotes = Light.toArray(new String[Light.size()]);
    } else {

        Dark = i.getStringArrayListExtra("dark");
        quotes = Dark.toArray(new String[Dark.size()]); 
    }

    Button clouds = (Button) findViewById(R.id.Change);
    TranslateAnimation cloud2 = new TranslateAnimation(0, 0, +200, 0);
    clouds.startAnimation(cloud2);
    cloud2.setDuration(1000);

    Button clouds3 = (Button) findViewById(R.id.nxt);
    TranslateAnimation cloud3 = new TranslateAnimation(+200, 0, 0, 0);
    clouds3.startAnimation(cloud3);
    cloud3.setDuration(1000);

    Button clouds4 = (Button) findViewById(R.id.back);
    TranslateAnimation cloud4 = new TranslateAnimation(-200, 0, 0, 0);
    clouds4.startAnimation(cloud4);
    cloud4.setDuration(1000);

    AdView adview = (AdView)findViewById(R.id.adView);
    AdRequest re = new AdRequest();
    re.setTesting(true);
    adview.loadAd(re);

    String ser = SerializeObject.ReadSettings(Startme.this, "myobject.dat");
    if (ser != null && !ser.equalsIgnoreCase("")) {
        Object obj = SerializeObject.stringToObject(ser);
        // Then cast it to your object and 
        if (obj instanceof ArrayList) {
            // Do something
            give = (ArrayList<String>)obj;
        }
    }

    TextView Dark=(TextView)findViewById(R.id.Quote); 

    Typeface face=Typeface.createFromAsset(getAssets(), "fonts/font1.ttf"); 
    Dark.setTypeface(face); 

    num = gen.nextInt(5);
    TextView text = (TextView) findViewById(R.id.Quote);
    text.setText( quotes[num]);

    TextView number = (TextView) findViewById(R.id.Qn);
    number.setText("#"+num);

    TextView Q=(TextView)findViewById(R.id.Qn); 
    Typeface tf=Typeface.createFromAsset(getAssets(), "fonts/titlefont.ttf"); 
    Q.setTypeface(tf); 

    }
}

строка 164

    if (Dark.isEmpty()){

        Light = i.getStringArrayListExtra("light");
----------> quotes = Light.toArray(new String[Light.size()]);
    } else {
  • 0
    Если это сближает силы, то есть исключение. Если вы публикуете LogCat, было бы полезно выяснить вашу проблему с кодом, но для меня кажется, что ваша переменная "Dark" равна нулю. Как вы отправляете «Дарк» на второе занятие?
  • 0
    Что сказал Максим - что это за сила закрытие? Вы остановились в отладчике и пошагово посмотрели на значение каждой переменной, которая может вызвать сбой (например, Dark, Light, i)?
Показать ещё 3 комментария
Теги:
string
arraylist
if-statement

1 ответ

2
Лучший ответ

Это никогда не будет делать ваше другое выражение, потому что ваш Темный аррайалист всегда будет пустым. Вы инициализируете его так, как в своей деятельности, и никогда не читаете его с вашего намерения. Возможно, вам захочется прочитать и первым, и решить, выполнять ли, если или иначе, в зависимости от "нулевой" единицы. Вы увидите, почему ниже.

Функция getStringArrayListExtra(key) будет возвращать null по умолчанию, если ключ, который вы ему даете, не существует, что означает, что никогда не было добавочного с добавленным ключом "свет" к вашему намерению. Это говорит о том, что ваша функция light() не вызвана.

Я бы предложил проверить ваш класс, который включает light() и dark().

  • 0
    Спасибо! сделал то, что вы сказали, и работал как шарм. Сделайте свет нулевым, когда вы нажмете на темноту, проверьте это и прекрасно работает.
  • 0
    Добро пожаловать, я рад, что это помогло.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню