2016-05-20 20 views
-2

私はアンドロイドを初めて利用しています。私はユーザーがステータスを更新できるシンプルなアプリケーションを作ろうとしています。私はログインしているステータスと現在のユーザーを表示し、ステータスを更新したいと思います。私はいくつかのコードを試して、それはユーザー名を提供しますが、現在のユーザーは提供しません。現在のユーザー名を取得するにはどうすればよいですか?誰でも助けてくれますか?ログインしている現在のユーザーのユーザー名を取得し、アンドロイドでSQLiteを使用します。

UpdateStatusActivity:

public class UpdateStatusActivity extends AppCompatActivity { 

public EditText mUpdateStatusTextBox; 
public Button mUpdateStatusButton; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_update_status); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    mUpdateStatusTextBox=(EditText)findViewById(R.id.updateStatusTextBox); 
    mUpdateStatusButton=(Button)findViewById(R.id.updateStatusButton); 
    mUpdateStatusButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //get the status user has entered and convert to string 
      String strUpdateStatus = mUpdateStatusTextBox.getText().toString(); 
      DatabaseUserDetails dbuserdeatils = new DatabaseUserDetails(getApplicationContext(),null,null,1); 
      String strCurrentUsername = dbuserdeatils.getUsername(); 
      DatabaseStatusUpdate dbstatusupdate = new DatabaseStatusUpdate(getApplicationContext(),null,null,1); 
      dbstatusupdate.saveStatus(strCurrentUsername,strUpdateStatus); 
      Log.d("onclickStatus",strCurrentUsername); 
      Log.d("onclickStatus",strUpdateStatus); 
      Toast.makeText(UpdateStatusActivity.this,"Status updated",Toast.LENGTH_LONG).show(); 
      Intent intent = new Intent(UpdateStatusActivity.this,HomePageActivity.class); 
      startActivity(intent); 
     } 
    }); 

} 

}

DatabaseUserDetails:

@Override 
public void onCreate(SQLiteDatabase db) { 
    String CREATE_TABLE_CLASS = "CREATE TABLE " + TABLE + "(" + 
      COLUMN_USERNAME + " " + " TEXT," + 
      COLUMN_PASSWORD + " " + " TEXT," + 
      COLUMN_EMAIL + " TEXT)"; 
    Log.d("onCreate",CREATE_TABLE_CLASS); 
    db.execSQL(CREATE_TABLE_CLASS); 
} 

public void insertEntry(String username,String password,String emailid) 
{ 
    ContentValues values = new ContentValues(); 
    values.put(COLUMN_USERNAME, username); 
    values.put(COLUMN_PASSWORD,password); 
    values.put(COLUMN_EMAIL, emailid); 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.insert(TABLE,null,values); 
    Log.d("insertEntry",username); 
    Log.d("insertEntry",password); 
    Log.d("insertEntry",emailid); 

    db.close(); 
} 
public String getSinlgeEntry(String userName) 
{ SQLiteDatabase db = this.getReadableDatabase(); 

    Cursor cursor=db.query(TABLE, new String[] {COLUMN_USERNAME, COLUMN_PASSWORD}, COLUMN_USERNAME + " = ? " , new String[]{userName}, null, null, null); 
    /* Cursor cursor=db.query(TABLE, null, COLUMN_USERNAME + " =?", new String[]{userName}, null, null, null);*/ 
    if(cursor.getCount()<1) // UserName Not Exist 
    { 
     cursor.close(); 
     return "NOT EXIST"; 
    } 
    cursor.moveToFirst(); 
    String password= cursor.getString(cursor.getColumnIndex(COLUMN_PASSWORD)); 
    Log.d("getSingleEntry",password); 
    cursor.close(); 
    return password; 
} 
public String getUsername(){ 
    SQLiteDatabase db = this.getReadableDatabase(); 
    /*Cursor cursor = db.query(TABLE, new String[] {COLUMN_USERNAME, COLUMN_PASSWORD}, COLUMN_USERNAME , null, null, null, null); 
    cursor.moveToFirst();*/ 
    String selectQuery = "SELECT "+COLUMN_USERNAME+ " FROM " + TABLE ; 
    Cursor cursor = db.rawQuery(selectQuery, null); 
    cursor.moveToFirst(); 
    String username=cursor.getString(cursor.getColumnIndex(COLUMN_USERNAME)); 
    return username; 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS " + TABLE); 
    onCreate(db); 
} 

DatabaseStatusUpdate:

public class DatabaseStatusUpdate extends SQLiteOpenHelper{ 

private static final int DATABASE_VERSION=1; 
private static final String DATABASE_NAME = "statusupadteDB.db"; 
private static final String TABLE = "statusuodate"; 
public static final String COLUMN_USERNAME = "username"; 
public static final String COLUMN_STATUS = "status"; 

public DatabaseStatusUpdate(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { 
    super(context, DATABASE_NAME, factory, DATABASE_VERSION); 
} 
@Override 
public void onCreate(SQLiteDatabase db) { 
    String CREATE_TABLE_CLASS = "CREATE TABLE " + TABLE + "(" + 
      COLUMN_USERNAME + " " + " TEXT," + 
      COLUMN_STATUS + " " + " TEXT)"; 
    Log.d("onCreate",CREATE_TABLE_CLASS); 
    db.execSQL(CREATE_TABLE_CLASS); 
} 
public void saveStatus(String username, String status) { 
    ContentValues values = new ContentValues(); 
    values.put(COLUMN_USERNAME,username); 
    values.put(COLUMN_STATUS,status); 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.insert(TABLE,null,values); 
    Log.d("saveStatus",username); 
    Log.d("saveStatus",status); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

} 
} 
+0

現在のユーザー名を格納している列またはフィールドは表示されません。ユーザー名と現在のユーザー名の違いを教えてください。 –

+0

ユーザ名と現在のユーザ名との違いは?彼らはすでに同じではないでしょうか? –

+0

@EsatIBIS基本的には、現在ログインしているユーザーの名前を表示します。 – PersianBlue

答えて

1

あなたはこのいくつかの異なる方法行うことができます。ログインアクティビティからわずか意思を通じて現在のユーザー名を渡す:

Intent intent = new Intent(this,HomePageActivity.class); 
intent.putExtra(String currentUserNameKey, currentUsername); 
startActivity(intent); 

またはユーザ名&パスワードが含まれているデータベースで、テーブルに新しい列を作成isCurrentUser &をするとき、現在のユーザーのためにtrueにそれを設定ラベルあなたは&にログインします。ホームページの活動中にisCurrentUserの値がtrueのユーザをデータベースに照会するだけです。ここにいくつかのサンプルコードがあります:

DBHelper dbhelper = new DBHelper(this); 
SQLiteDatabase db = dbhelper.getWritableDatabase(); 
Cursor cursor = db.query(Table, 
    username, 
    isCurrentUser + " = ? ", 
    new String []{"true"}, 
    null, null, null); 
cursor.moveToFirst(); 
String currentUsername = cursor.getString(cursor.getColumnIndex("username")); 
関連する問題