0

if ブロックをキャッチしないこのアクティビティ クラスがあります。私は初心者なので、指定されたユーザー ID (「001」) をキャッチして、スプラッシュ スレッドの後に特定のインテント (AdminTab) を起動する他の方法は考えられませんでした。

誰かが私が間違っていることを指摘したり、サンプルコードでアドバイスしてくれませんか? ありがとうございました!

public class Splash extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {

    final UserFunctions userFunction = new UserFunctions();

    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    Thread timer = new Thread(){

    public void run(){

    String id = "";
    id = userFunction.getID(getApplicationContext());

    try{
        sleep(1000);
        //Should open AdminTab if user id is "001"      
        if("001".equals(id)){

        Intent i = new Intent(getApplicationContext(), 
                    AdminTab.class);

                    startActivity(i);

        }else{

        Intent i = new Intent(getApplicationContext(), 
                    UserTab.class);

                    startActivity(i);
        }

        } catch (InterruptedException e){
        e.printStackTrace();
        }finally {


        }
    }

    };

    timer.start();
}

これは UserFunctions クラスの getID メソッドです。sqlite データベース ハンドラからの getUserID。

UserFunctions.java

public String getID(Context context) {
    String id = "";
    DatabaseHandler db = new DatabaseHandler(context);
    Cursor cursor = db.getUserID();

    if(cursor != null) {
        while(cursor.moveToNext()) {
            id = cursor.getString(0);
        }
    } else {
        id = "";
    }

    cursor.close();
    db.close();
    return id;
}
4

2 に答える 2

0

コードは正常に機能するはずですが、エラーが発生していますか?

多分それをid.equals( "001")に変更します

これがメインのアクティビティではない場合は、必要に応じてインテントでIDを送信してみませんか?

何が問題なのか完全にはわかりません。

于 2012-10-30T04:40:27.127 に答える
0

"001".equals(id) に問題はありません。

getID() から取得している ID を確認してください。データベースから取得している ID に問題があります。値を印刷してクロスチェックしてみてください。

于 2012-10-30T05:20:19.017 に答える