2013-02-21 38 views
5

Xin chào, tôi đã phát triển một ứng dụng có hộp văn bản và nút tìm kiếm khi tôi nhập số vào hộp văn bản và nhấp vào nút tìm kiếm cần chuyển giá trị đã nhập đến hoạt động tiếp theo, nơi nó sử dụng giá trị đó để lấy giá trị từ cơ sở dữ liệu.Truyền giá trị từ hoạt động này sang hoạt động khác trong android

Tôi đang sử dụng mã sau để chuyển giá trị.

search_button.setClickable(true); 
     search_button.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
     // TODO Auto-generated method stub 
     String outlet_no = outlet_id.getText().toString(); 
     System.out.println(outlet_no); 
     if(!outlet_no.isEmpty()){ 
     @SuppressWarnings("deprecation") 
     SharedPreferences myPrefs = getApplicationContext().getSharedPreferences("myPrefs", MODE_WORLD_READABLE); 
     SharedPreferences.Editor prefsEditor = myPrefs.edit(); 

     prefsEditor.putString("outlet_id", outlet_no); 
     prefsEditor.commit(); 

     Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class);  
     startActivity(myIntent); 
     HomeActivity.this.startActivity(myIntent); 
     } 
     else{ 
      Toast.makeText(getApplicationContext(), "Please enter an outlet id", Toast.LENGTH_SHORT); 
     } 
     } 
    }); 

Vấn đề của tôi là nó không vượt qua giá trị. Bất kỳ ai có thể giúp tôi với điều này và cũng có thể any1 giải thích cho tôi mã trên như tôi didnot viết nó và tôi thấy khó khăn để hiểu nó.

bên StoreActivity

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.store);  
     myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);    
     mOutletID = myPrefs.getString("outlet_id", "0"); 
     mOutletDetails = myPrefs.getString("outlet_details","{}"); 
     Log.v("outlet_details",myPrefs.getString("outlet_details","{}")); 
     if(mOutletDetails != "{}"){ 
      setOutletData(mOutletDetails); 
     } 
     else{ 
      executeAjaxRequest(); 
     } 
    }  

Trả lời

9

sai lầm bạn đã thực hiện:

1) Tại sao các bạn cố gắng để bắt đầu hoạt động hai lần?

startActivity(myIntent); // this is OK 
HomeActivity.this.startActivity(myIntent); 

2) Để vượt qua văn bản được nhập từ một hoạt động khác, bạn có thể sử dụng putExtra() phương pháp của Ý định, ví dụ:

myIntent.putExtra("SearchText", outlet_no); 

Vì vậy, mã hoàn chỉnh của bạn sẽ là:

Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class); 
myIntent.putExtra("SearchText", outlet_no);  
startActivity(myIntent); 

3) Để nhận giá trị mà bạn đã vượt qua từ hoạt động đầu tiên:

Intent intent = getIntent(); 
Bundle bundle = intent.getExtras(); 
String outlet_no= bundle.getString("SearchText"); 

4) SharedPreferences:

FYI, SharedPreference được sử dụng để tiết kiệm lượng nhỏ dữ liệu có thể được tham khảo và sử dụng sau này trên ứng dụng.

Bạn nên tham khảo bên dưới liên kết:

  1. SharedPreferences
  2. Intent
  3. Intent and Intent Filters
+0

tôi không viết mã này và có nhiều lỗi mà tôi đang vẫy một cuộc chiến để sửa ... –

+1

@JayantShinde Chỉ cần đi qua câu trả lời của tôi. –

+0

không có lỗi trên, tôi có một số lỗi khác bạn có thể giúp tôi khắc phục nó như tôi đang bị quản chế tại nơi làm việc của mình và tôi cần cung cấp càng sớm càng tốt và tôi thấy khó sửa vì tôi không được đào tạo trên android ... –

3
Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class); 
myIntent.putExtra("searchString", outlet_no);  
startActivity(myIntent); 

này sẽ gửi searchString đến StoreActivity

.210

và trong StoreActivity bạn có thể lấy giá trị sử dụng:

String s = getIntent.getStringExtra("searchString"); 
0

Bạn có thể thử một cái gì đó như thế này: -

Hoạt động Một

myIntent.putExtra(var, value); // Putting the value 
startActivity(myIntent); 

Hoạt động B

String value = getIntent().getStringExtra(var); // Getting the value 
-1

Bạn chỉ có thể viết nó như

Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class); 
     myIntent.putExtra("outlet_no",outlet_no); 
     startActivity(myIntent); 

Hãy cho tôi biết nếu điều này làm việc hay không.

0

Cách đơn giản nhất để làm điều này sẽ được vượt qua id phiên đến hoạt động signout trong mục đích bạn đang sử dụng để bắt đầu hoạt động:

Intent intent = new Intent(getBaseContext(), SignoutActivity.class); 
intent.putExtra("EXTRA_SESSION_ID", sessionId); 
startActivity(intent) 

Các docs cho Intents có thêm thông tin (nhìn vào phần có tiêu đề "Extras").

2

Trong phương pháp onClick của bạn, có đoạn mã sau:

String outlet_no = outlet_id.getText().toString(); 
    if(!outlet_no.isEmpty()){ 
     Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class); 
     myIntent.putExtra("outlet_id",outlet_no); 
     startActivity(myIntent); 
    } 
    else{ 
     Toast.makeText(getApplicationContext(), "Please enter an outlet id", Toast.LENGTH_SHORT); 
    } 

Bây giờ trong StoreActivity, trong phương thức onCreate() có một cái gì đó như thế này:

String outlet_no = getIntent().getStringExtra("outlet_id"); 
if (outlet_no != null) //Just a defensive check 
    //Start your processing 
-1

Hoạt động Một

myIntent.putExtra(var, value); // Putting the value 
startActivity(myIntent); 

Hoạt động B

String value = getIntent().getStringExtra(var); // Getting the value 
1

Bạn cũng có thể thực hiện việc này với Mục đích.

Này, chúng tôi có 2 hoạt động: SourceActivity & DestinationActivity và chúng tôi muốn vượt qua một giá trị của SourceActivity để DestinationActivity

trong Nút OnClickListener của bạn:

String str_outlet_no = outlet_no.getText().toString(); 
Intent intent = new Intent(SourceActivity.this, DestinationActivity.class); 
intent.putExtra("outlet_no_key", outlet_no); 
startActivity(intent); 

và ở phía bên kia trong DestinationActivity:

Intent intent = getIntent(); 
String desi = intent.getStringExtra("outlet_no"); 

và tìm kiếm desi từ cơ sở dữ liệu

Các vấn đề liên quan