2016-11-25 2 views
1

Ich verwende SimpleDateFormat auf Android. Ich habe es mit API 24 getestet und es hat funktioniert. Wenn ich versuche, es auf API 16 zu verwenden, stürzt es ab. Ich habe das Internet durchsucht und ich fand Leute, die sagen, dass es wegen einer falschen Importanweisung (import android.icu.text.SimpleDateFormat) sein könnte, aber ich verwende bereits import java.text.SimpleDateFormat.Android: SimpleDateFormat gibt API Fehler

Mein Code (stürzt auf onclickButton):

import java.text.SimpleDateFormat; 

public class MainActivity extends AppCompatActivity { 

SimpleDateFormat sdf; 
String date; 

    public void onclickButton (View view) { 

     Calendar c = Calendar.getInstance(); 
     sdf = new SimpleDateFormat("dd MM YYYY"); 
     sdf.setTimeZone(TimeZone.getTimeZone("Europe/Berlin")); 
     date = sdf.format(c.getTime()); 
    } 
... 
} 

Stacktrace:

W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xb111d228) 
E/AndroidRuntime: FATAL EXCEPTION: main 
       java.lang.IllegalStateException: Could not execute method for android:onClick 
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 
        at android.view.View.performClick(View.java:4084) 
        at android.view.View$PerformClick.run(View.java:16966) 
        at android.os.Handler.handleCallback(Handler.java:615) 
        at android.os.Handler.dispatchMessage(Handler.java:92) 
        at android.os.Looper.loop(Looper.java:137) 
        at android.app.ActivityThread.main(ActivityThread.java:4745) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:511) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
        at dalvik.system.NativeStart.main(Native Method) 
       Caused by: java.lang.reflect.InvocationTargetException 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:511) 
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
        at android.view.View.performClick(View.java:4084)  
        at android.view.View$PerformClick.run(View.java:16966)  
        at android.os.Handler.handleCallback(Handler.java:615)  
        at android.os.Handler.dispatchMessage(Handler.java:92)  
        at android.os.Looper.loop(Looper.java:137)  
        at android.app.ActivityThread.main(ActivityThread.java:4745)  
        at java.lang.reflect.Method.invokeNative(Native Method)  
        at java.lang.reflect.Method.invoke(Method.java:511)  
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)  
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  
        at dalvik.system.NativeStart.main(Native Method)  
       Caused by: java.lang.IllegalArgumentException: Unknown pattern character 'Y' 
        at java.text.SimpleDateFormat.validateFormat(SimpleDateFormat.java:268) 
        at java.text.SimpleDateFormat.validatePattern(SimpleDateFormat.java:323) 
        at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:369) 
        at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:253) 
        at com.jonathan_tilly.adventskalender.MainActivity.onclickButton(MainActivity.java:34) 
        at java.lang.reflect.Method.invokeNative(Native Method)  
        at java.lang.reflect.Method.invoke(Method.java:511)  
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)  
        at android.view.View.performClick(View.java:4084)  
        at android.view.View$PerformClick.run(View.java:16966)  
        at android.os.Handler.handleCallback(Handler.java:615)  
        at android.os.Handler.dispatchMessage(Handler.java:92)  
        at android.os.Looper.loop(Looper.java:137)  
        at android.app.ActivityThread.main(ActivityThread.java:4745)  
        at java.lang.reflect.Method.invokeNative(Native Method)  
        at java.lang.reflect.Method.invoke(Method.java:511)  
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)  
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  
        at dalvik.system.NativeStart.main(Native Method)  

Jede Hilfe ist willkommen!

+1

Zeigen Sie den Stacktrace. Außerdem glaube ich nicht, dass Sie Variablen außerhalb einer Klasse deklarieren können. – nbokmans

+0

Sie haben Recht, ich habe es bearbeitet. Ich habe nur den Fehler gemacht, als ich den Code kopiert habe. Ich habe auch das Stacktrace – nox

+0

Versuchen Sie mit 'TT MM JJJJ' –

Antwort

0

Wahrscheinlich liegt das daran, dass Sie Variablen aus der Klasse deklarieren. Versuchen:

import java.text.SimpleDateFormat; 

public class MainActivity extends AppCompatActivity { 

    SimpleDateFormat sdf; 
    String date; 

    public void onclickButton (View view) { 

     Calendar c = Calendar.getInstance(); 
     sdf = new SimpleDateFormat("dd MM yyyy"); 
     sdf.setTimeZone(TimeZone.getTimeZone("Europe/Berlin")); 
     date = sdf.format(c.getTime()); 
    } 
... 

}

+0

Vielen Dank für Ihre Antwort. Du hast Recht, das war ein Fehler, den ich gemacht habe, als ich den Code in meinen Post kopiert habe. Ich habe es oben bearbeitet :) Ich habe immer noch das Problem mit dieser Korrektur. – nox

+1

Siehe die Zeile in Ihrem Stacktrace: 'verursacht durch: java.lang.IllegalArgumentException: Unbekanntes Musterzeichen 'Y''. Versuchen Sie, YYYY in JJJJ (Kleinbuchstaben) zu ändern. – fsnasser

-1

ich glaube, Sie

new SimpleDateFormat("dd MM yyyy"); 

für

new SimpleDateFormat("dd MM YYYY"); 

Er arbeitete für mich

und Java-doc sagt YYYY Statt verwenden sollten, ist Woche Jahr Here

Verwandte Themen