2013-05-15 122 views
0

我有兩個活動,第一個活動「LoginActivity」,第二個活動「student_活動」。 請直到我如何調用方法從第二個活動「呼叫」,並返回值布爾到知道用戶的第一個活動,如果id和密碼正確或不正確。 第一次活動從「edittext」獲得id和密碼,然後從第二次活動中的方法發送id和密碼肯定來自服務器的數據。如何從第二個活動和返回值調用方法

碼第一個活動是:

public class LoginActivity extends Activity{ 
     EditText EdtId; 
     EditText EdtPassword; 
     Button btn1; 
     SharedPreferences prefs; 
      @Override 
      public void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.login); 
       prefs = this.getSharedPreferences(this.getApplicationContext().getPackageName(), Context.MODE_PRIVATE); 
       EdtId=(EditText)findViewById(R.id.IdStudent); 
       EdtPassword=(EditText)findViewById(R.id.PasswordStudent); 
       btn1=(Button)findViewById(R.id.btnLogin); 

       btn1.setOnClickListener(new OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         createLoginSession(Integer.parseInt(EdtId.getText().toString()),EdtPassword.getText().toString()); 
//here call second activity for sure from data 
         Intent intent = new Intent(LoginActivity.this,tofi.android.Student_Activity.class); 
          startActivity(intent);  
          finish(); 
         startActivity(new Intent(LoginActivity.this,com.jcxavier.widget.test.BadgeButtonTestActivity.class)); 
        } 
       }); 
      } 
    //this method store data in SharedPreferences for get this data in second activity 
     public void createLoginSession(int id, String password){ 
      SharedPreferences.Editor editor = prefs.edit(); 
      editor.putInt("id", id); 
      editor.putString("password", password); 
      editor.commit(); 
      } 
    } 

代碼第二活動是:在第一個活動

public class Student_Activity { 
SharedPreferences prefs = this.getSharedPreferences(this.getApplicationContext().getPackageName(), Context.MODE_PRIVATE); 
    public void onCreate(Bundle icicle) { 
       super.onCreate(icicle); 
       setContentView(R.layout.program_student); 
       NewsLoader call = new NewsLoader(); 
    call.execute(this, true);  
      } 
       private Context context; 
      private boolean pullFromServer = false; 
      class NewsLoader extends AsyncTask<Object, Void, List<student>> { 
       private Context context; 
       private boolean pullFromServer = false; 

       protected List<student> doInBackground(Object... params) { 
        context = (Context) params[0]; 
        pullFromServer = (Boolean) params[1]; 
        dataSource.open(); 
        if (pullFromServer) { 
    //get attribute from SharedPreferences 
         int id = prefs.getInt("id", 24); 
         String password = prefs.getString("password","wce"); 
    // studentHandler class for sure password content method call for send to server and //return value if correct or not correct and return value type bool. 
         bool s; 
         s = StudentHandler.getInstance().call(context,id,password); 
     } 
     } 
    } 
+0

'call'從哪裏來?你有'call.execute(this,true);' – HeatfanJohn

+0

我是更新代碼 – OldIt

+0

這就是我的想法,@唐的答案應該給你你需要的東西。 – HeatfanJohn

回答

4

1.呼叫startActivityForResult()documentation)和覆蓋onActivityResult()documentation)。

2.在第二個活動執行,你需要做的(這也可以在第一項活動由經Intent傳遞數據來完成),並從第二個活動叫setResult(int resultCode, Intent data)documentation),然後finish();任何驗證。

如果使用startActivityForResult()不是你的情況是可行的,那麼你可以簡單地使用setResult()和startActivity(),通過您通過一個Intent需要的任何數據,並在onActivityResult().

我只是掠過這個驗證,但它的行動中的here's an example

+0

請你能給我簡單的例子,或以相同的代碼示範我。 – OldIt

+0

@OldIt我在我的問題中插入了一個示例鏈接。如果您有任何問題,請告訴我。 – Don

+0

非常感謝答案,那是我所需要的。 – OldIt

相關問題