切换条件在Android中不起作用

时间:2014-05-22 08:52:23

标签: java android if-statement switch-statement

所以我有这段代码:

package com.sunil.phpconnect;

import java.io.BufferedReader;
import java.io.InputStreamReader;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
        Button nao;
        Button foto;
        Button novamen;
        TextView ola;    
        HttpClient httpclient1, httpclient;
        HttpGet request1, request;
        HttpResponse response1, response;
        String url,iduser, urlmensagens;


             @Override
             public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
              Bundle  extras = getIntent().getExtras();
              iduser= extras.getString("userid");


               TextView result = (TextView) findViewById(R.id.tvResult);
               //String g = result.getText().toString();
              // String h = "valor";

               urlmensagens = ("http://mywebsite.php?iduser="+iduser);
               novamen = (Button) findViewById(R.id.mensagens);


                   //cenas da net
                    try {
                     httpclient1 = new DefaultHttpClient();
                     request1 = new HttpGet(urlmensagens);
                     response1 = httpclient1.execute(request1);

                    }
                    catch (Exception e){

                    }
                    try{ 
                      BufferedReader dr = new BufferedReader(new InputStreamReader(
                        response1.getEntity().getContent()));


                      String mensage = "";


                      mensage = dr.readLine();

                      String check_sms = mensage;

                      Toast.makeText(getApplicationContext(), check_sms,
                              Toast.LENGTH_LONG).show();



                //novamen.setText(check_sms + " Mensagens por ler!");





                      switch(check_sms) {
                      case "b":
                          novamen.setVisibility(View.GONE);
                          break;
                      case "a":
                          novamen.setVisibility(View.VISIBLE);
                          break;
                      default:
                          novamen.setVisibility(View.GONE);
                  }


                    } catch (Exception e) {
                          // Code to handle exception  

                         }

              url = ("http://mywebsite.php?action=requestuserdata&userid="+iduser);


              try {
               httpclient = new DefaultHttpClient();
               request = new HttpGet(url);
               response = httpclient.execute(request);
              }

              catch (Exception e) {
               }


              try {
               BufferedReader rd = new BufferedReader(new InputStreamReader(
                 response.getEntity().getContent()));
               String line = "";
               line = rd.readLine();



                   if(line == null){
                       Toast.makeText(getApplicationContext(), "Numero nao atribuido.",
                                  Toast.LENGTH_LONG).show();
                       Intent wowmuch = new Intent(getApplicationContext(), pin.class);
                     startActivity(wowmuch);    
                   }else{
                       result.append(line);

                   }

              } catch (Exception e) {

              }

              novamen = (Button) findViewById(R.id.mensagens);
                novamen.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {

                            chamaMensagens();
                            }

                        public void chamaMensagens () {

                            Intent mens = new Intent(getApplicationContext(),mensagens.class);
                            mens.putExtra("userid", iduser);
                            startActivity(mens);}});


              foto = (Button) findViewById(R.id.button1);
              foto.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

                    Chamafoto();
                }
                public void Chamafoto() {

                    Intent wowmuch = new Intent(getApplicationContext(), Foto.class);
                    wowmuch.putExtra("userid", iduser);        
                    startActivity(wowmuch);
                }
            });
              Toast.makeText(getApplicationContext(), iduser, 
                      Toast.LENGTH_SHORT).show();
              nao = (Button) findViewById(R.id.button2);
                nao.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {

                            chamaConsulta();
                            }
                    }
                );
                }

                        public void chamaConsulta () {

                            Intent wowmuch = new Intent(getApplicationContext(),pin.class);

                            startActivity(wowmuch); 
                        }


}

当我到达这一部分时:

switch(check_sms) {
                          case "b":
                              novamen.setVisibility(View.GONE);
                              break;
                          case "a":
                              novamen.setVisibility(View.VISIBLE);
                              break;
                          default:
                              novamen.setVisibility(View.GONE);
                      }

当变量“check_sms”值为“b”时,按钮是不可见/不可用的。

我测试了变量是否正在显示并且它在Toast中。

我也尝试使用if语句而且什么都不做。

4 个答案:

答案 0 :(得分:5)

switch(someInteger)会奏效 switch(someChar)会奏效 switch(someEnum)会奏效 switch(someString)仅适用于 JAVA 1.7

据我所知,Android尚不支持Java 1.7。

答案 1 :(得分:0)

开启String ??转到Enum ...我想你已经用jdk1.7编译了src代码..使用jdk1.6编译它... jdk1.7尚不支持..

答案 2 :(得分:0)

只能在Der Golem指定的情况下在java 1.7中使用string。您可以使用enum,char,int类型。您可以参考http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html了解更多信息。

从上面的链接

与if-then和if-then-else语句不同,switch语句可以有许多可能的执行路径。交换机使用byte,short,char和int原始数据类型。它也适用于枚举类型(在枚举类型中讨论),String类和一些包含某些基本类型的特殊类:Character,Byte,Short和Integer(在Numbers和Strings中讨论)。

答案 3 :(得分:0)

当然你可以使用带有Java 7的开关,但在这种情况下(只有2个选项),我会用

if ( "a".equalsIgnoreCase( check_sms ) ){
   ....
} else {
   ....
}

永远不要为此目的使用check_sms ==“a”。