2015-06-26 99 views
-1

我試圖在我的應用程序開始時執行最基本的安全形式,如果您輸入正確的名稱和姓氏,將會調用新的活動。android - 基本安全功能

見我的代碼在這裏:

public class MainActivity extends Activity { 

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

    Button buttonIntroSubmit = (Button) findViewById(R.id.button_intro); 

    Intent introPass = new Intent(this, questionareActivity.class); 

    buttonIntroSubmit.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      EditText firstName = (EditText) findViewById(R.id.first_name); 
      EditText lastName = (EditText) findViewById(R.id.last_name); 
      TextView test = (TextView) findViewById(R.id.test); 

      String fullName = firstName.getText() + " " + lastName.getText(); 
      String password = "Mieke Snyman"; 

      test.setText(fullName); 

      if(fullName !== password) { 
       String toastPass = "Approved"; 
       Toast pass = Toast.makeText(getApplicationContext(), toastPass, Toast.LENGTH_LONG); 
       pass.show(); 
      } 
     } 
    }); 
} 

如果我在名字字段,準確「Snyman」在姓氏鍵入正是「米克」,顯示「米克Snyman」在我指定的測試的TextView文本內容通過變量「fullName」。但是,如果我使用相同的變量爲if條件,它不會進入if。

任何想法爲什麼?也許空白字符或我在我的情況下缺少的東西?

+0

使用'equals'絃樂比較 – calvinfly

回答

1

使用.equals();,而不是== 所以它看起來像這樣:

if (!fullName.equals(password){ 
String toastPass = "Approved"; 
       Toast pass = Toast.makeText(getApplicationContext(), toastPass, Toast.LENGTH_LONG); 
       pass.show(); 
} 

重要信息 ==測試參考平等。 .equals()測試值相等。

,正如你可以看到 String fullName沒有同一基準String password這將導致false,注意==作品完美地與原語;只是因爲它們不是不同於java中Strings的對象。

More useful info

Documentation

編輯

談論安全我注意到你使用一個字符串來保存這是在Java中的不良做法的密碼。

一旦你在內存中創建的字符串,你無法擺脫的數據字符串是不可改變的,所以它的最好使用的char []