0

私は、3 つのチェックを実行するスタートアップにアプリを持っています (すべては「アプリケーション」と呼ばれる別のファイルで行われます): 最初にインターネット接続、次にインターネット接続の種類、最後にメイン アクティビティを開始するためのアプリのアクセス許可。

3 つのチェックはすべて正しくパスしますが、最後のパスでは文字列値 "False" を取得します。これは問題ありませんが、スプラッシュ スクリーンでその値をチェックしたい場合は機能しません。別のアクティビティを起動するために値が false の場合に if ブロックを設定しましたが、そうではなく、そのブロックを無視するだけです。

コードは次のとおりです。

 public void onCreate(Bundle savedInstanceState) {
    setFullScreen();
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_activity_init);
    if(APP.connectionCheck(InitActivity.this) == "TRUE"){
        JSONObject JOBJC = APP.getJSON(APP.defaultUrl());
        String result = APP.checkPermission(JOBJC);
        if(result=="false"){
            Intent i = new Intent(this,app.pcg.notation.Notation.class);
            startActivity(i);
            finish();
        }else if(result=="true"){

        }
    }else{
        Intent i = new Intent(this,app.pcg.notation.Notation.class);
        startActivity(i);
        finish();
    }
}
4

4 に答える 4

1

常にequals() を使用します。2 つの文字列を比較している間

==演算子はオブジェクトへの参照をチェックし、whileequals()はその値をチェックするためです。

適切な結果が得られます

if( APP.connectionCheck(InitActivity.this).equals("true"))
{
}

また

if( APP.connectionCheck(InitActivity.this).equalsIgnoreCase("true"))
{
}
于 2012-09-29T13:19:32.457 に答える
1

これに変更しますresult.equals("false") or result.equalsIgnoreCase("false")==演算子を使用して文字列を比較することはできません。

else part も同様に行います。

result.equals("true") or result.equalsIgnoreCase("true")

コードを編集

if(APP.connectionCheck(InitActivity.this).equalsIgnoreCase("true")){
        JSONObject JOBJC = APP.getJSON(APP.defaultUrl());
        String result = APP.checkPermission(JOBJC);
        if(result.equalsIgnoreCase("false")){
            Intent i = new Intent(this,app.pcg.notation.Notation.class);
            startActivity(i);
            finish();
        }else if(result.equalsIgnoreCase("true")){

        }
    }else{
        Intent i = new Intent(this,app.pcg.notation.Notation.class);
        startActivity(i);
        finish();
    }
于 2012-09-29T13:15:17.113 に答える
1

Strings を==Javaと比較することはできません。String.equals()代わりに使用してください。

Java で文字列を比較するにはどうすればよいですか? を参照してください。良い説明のために。

于 2012-09-29T13:15:30.410 に答える
1

文字列比較は で行う必要があり.equals()ます。for objectsを使用==すると、値ではなくポインター値 (つまり、同じオブジェクトかどうか) が比較されます。

だから、if(APP.connectionCheck(InitActivity.this).equals("TRUE"))...

于 2012-09-29T13:15:32.000 に答える