5

嗨,我开发了一个应用程序,它有一个文本框和一个搜索按钮,当我在文本框中输入一个数字并单击搜索按钮时,它需要将输入的值传递给下一个使用该值获取值的活动从数据库。

我正在使用以下代码来传递值。

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);
        }  
      }
    });

我的问题是它没有传递价值。任何人都可以帮我解决这个问题,也可以解释一下上面的代码,因为我没有写它,我发现它很难理解。

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();
        }
    }    
4

8 回答 8

9

你犯的错误:

1)你为什么要尝试两次开始活动?

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

2) 要将输入的文本从一个活动传递到另一个活动,您可以使用putExtra()Intent 方法,例如:

myIntent.putExtra("SearchText", outlet_no);

所以你的完整代码是:

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

3)接收您从第一个活动传递的价值:

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

4)共享偏好:

仅供参考,SharedPreference用于保存少量数据,以便以后在应用程序中引用和使用。

您应该参考以下链接:

  1. 共享首选项
  2. 意图
  3. 意图和意图过滤器
于 2013-02-21T07:20:13.970 回答
3
Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class);
myIntent.putExtra("searchString", outlet_no);       
startActivity(myIntent);

这将发送searchStringStoreActivity

并且StoreActivity您可以使用以下方法检索值:

String s = getIntent.getStringExtra("searchString");
于 2013-02-21T07:21:38.630 回答
2

在您的 onClick 方法中,具有以下代码:

    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);
    }  

现在在 StoreActivity 中,在 onCreate() 方法中有如下内容:

String outlet_no = getIntent().getStringExtra("outlet_id");  
if (outlet_no != null) //Just a defensive check
   //Start your processing
于 2013-02-21T07:30:01.820 回答
1

您也可以使用 Intents 执行此操作。

假设我们有 2 个活动:SourceActivity 和 DestinationActivity,我们想将 SourceActivity 的值传递给 DestinationActivity

在您的按钮 OnClickListener 中:

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);

在 DestinationActivity 的另一边:

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

并从数据库中搜索desi

于 2014-02-09T16:15:54.227 回答
0

最简单的方法是将会话 ID 传递给您用于启动活动的意图中的注销活动:

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

Intents的文档有更多信息(查看标题为“Extras”的部分)。

于 2013-02-21T07:24:32.077 回答
0

你可以尝试这样的事情: -

活动一

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

活动 B

String value = getIntent().getStringExtra(var); // Getting the value
于 2013-02-21T07:22:48.803 回答
-1

活动一

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

活动 B

String value = getIntent().getStringExtra(var); // Getting the value
于 2013-02-21T07:49:51.333 回答
-1

你可以简单地把它写成

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

让我知道这是否有效。

于 2013-02-21T07:23:17.257 回答