使用enum切换带枚举的case语句

时间:2012-04-18 16:29:12

标签: java android android-intent switch-statement

我正在尝试从通过intent

返回的字符串创建switch语句
public class ContactDetailsActivity extends Activity {

String address;
String hours;
String name;
TextView textview;
String Zero = "0"; 
String One  = "1";
String Two  = "2";
String Three = "3";
String Four = "4";

 Intent receivedIntent = getIntent(); 
 String myUrl = receivedIntent.getStringExtra("key");

 public void main(String myUrl){
     Log.v("myUrl", myUrl);
       String locations = myUrl;
       locationsNum location = locationsNum.valueOf(locations);
       switch(location) {
       case Zero:
         textview.setText("Got it");
         textview.setText("It Worked!!");
        break;
       }
   }
   public enum locationsNum {
        Zero, 
        One,
        Two,
        Three,
        Four

   }
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    textview = new TextView(this);
    textview.setText("This is the Contact tab");


    //Intent receivedIntent = getIntent(); 
    //String myUrl = receivedIntent.getStringExtra("key"); 


     //   Toast.makeText(this, myUrl, Toast.LENGTH_SHORT).show(); 
}

正在返回的数据是索引值“0 - 4”,我将它放在myUrl中进行测试。 我收到了一个无法实施的活动错误。

我做错了什么或者我错过了什么?

感谢您的帮助!

这是错误日志

04-18 11:47:59.402: E/AndroidRuntime(1383): FATAL EXCEPTION: main
04-18 11:47:59.402: E/AndroidRuntime(1383): java.lang.RuntimeException: Unable to instantiate     activity ComponentInfo{com.mlgw.mlgwapp/com.mlgw.mlgwapp.ContactDetailsActivity}:  java.lang.NullPointerException
04-18 11:47:59.402: E/AndroidRuntime(1383):     at   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
04-18 11:47:59.402: E/AndroidRuntime(1383):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
04-18 11:47:59.402: E/AndroidRuntime(1383):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-18 11:47:59.402: E/AndroidRuntime(1383):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
04-18 11:47:59.402: E/AndroidRuntime(1383):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-18 11:47:59.402: E/AndroidRuntime(1383):     at android.os.Looper.loop(Looper.java:130)
04-18 11:47:59.402: E/AndroidRuntime(1383):     at android.app.ActivityThread.main(ActivityThread.java:3683)
04-18 11:47:59.402: E/AndroidRuntime(1383):     at java.lang.reflect.Method.invokeNative(Native Method)
04-18 11:47:59.402: E/AndroidRuntime(1383):     at  java.lang.reflect.Method.invoke(Method.java:507)
04-18 11:47:59.402: E/AndroidRuntime(1383):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-18 11:47:59.402: E/AndroidRuntime(1383):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-18 11:47:59.402: E/AndroidRuntime(1383):     at dalvik.system.NativeStart.main(Native Method)
04-18 11:47:59.402: E/AndroidRuntime(1383): Caused by: java.lang.NullPointerException
04-18 11:47:59.402: E/AndroidRuntime(1383):     at com.mlgw.mlgwapp.ContactDetailsActivity.<init>(ContactDetailsActivity.java:23)
04-18 11:47:59.402: E/AndroidRuntime(1383):     at java.lang.Class.newInstanceImpl(Native Method)
04-18 11:47:59.402: E/AndroidRuntime(1383):     at java.lang.Class.newInstance(Class.java:1409)
04-18 11:47:59.402: E/AndroidRuntime(1383):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
04-18 11:47:59.402: E/AndroidRuntime(1383):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
04-18 11:47:59.402: E/AndroidRuntime(1383):     ... 11 more

3 个答案:

答案 0 :(得分:1)

我问了一个类似的问题Java using enum with switch statement。查看给出的答案,找到使其发挥作用的解决方案。

答案 1 :(得分:0)

尝试在switch case中用locationsNum.zero替换零。

答案 2 :(得分:0)

我明白了,不需要枚举。我唯一需要做的就是将返回的字符串转换为整数,将其添加到switch语句中并且它有效。