android - 在android中将值(value)从一个 Activity 传递到另一个 Activity

标签 android android-activity

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

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

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

最佳答案

你犯的错误:

1) 为什么要尝试启动 Activity 两次?

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

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

myIntent.putExtra("SearchText", outlet_no);

所以你的完整代码是:

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

3) 接收您从第一个 Activity 传递的值:

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

4) 共享首选项:

仅供引用,SharedPreference 用于保存少量数据,供以后跨应用程序引用和使用。

您应该引用以下链接:

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

关于android - 在android中将值(value)从一个 Activity 传递到另一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14996597/

相关文章:

java - 如何在下一个方法之前显示整个 admob 影片剪辑

java - 如何将文件保存在下载目录中?

android - 如何将消息从 Intent Service 发送到 Activity

android - 将 urbanairship 添加到 config.xml 后,PhoneGap Android 应用程序崩溃

android - 微调 Activity 不工作

android - CollapsingToolbarLayout 标题在与侧抽屉重叠时消失

Android:如何重新启动 Activity

java - Intent-filter Browsable for and android Application, not Activity?

android 改变拍照尺寸

android回到第一屏