【问题标题】:pass edittext value using array使用数组传递edittext值
【发布时间】:2013-09-19 08:26:51
【问题描述】:

我有超过 3 个编辑文本。当我在edittext中输入内容时,我需要将其保存到另一个屏幕。我提到了一些问题得到了答案。但是如何通过数组。我使用了每个edittext的单独putExtra方法和另一个我需要显示一个TextView的屏幕。现在我为每个创建了单独的 TextView。

代码:

活动:

 et=(EditText)findViewById(R.id.et);

            et1=(EditText)findViewById(R.id.et1);

            btn=(Button)findViewById(R.id.btn);

            btn.setOnClickListener(new OnClickListener(){

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    Intent intent = new Intent(Save.this, Get.class);
                String[] myStrings = new String[] {"et.getText().toString()", "et1.getText().toString()"};
                intent.putExtra("strings", myStrings);
                startActivity(intent);


SharedPreferences preferences = getDefaultSharedPreferences(this);
                  SharedPreferences.Editor editor = preferences.edit();
                  editor.putString("Name","test");
                  editor.commit();

                    }


            });

活动1:

    Intent intent = getIntent();
              String[] myStrings = intent.getStringArrayExtra("strings");

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
          String name = preferences.getString("Name","");


              txt=(TextView)findViewById(R.id.txt);
                txt.setText(myStrings); 

【问题讨论】:

  • setText 给出错误:TextView 类型中的方法 setText(CharSequence) 不适用于参数 (String[])
  • @Enrichman:查看编辑后的代码
  • myStrings 是一个数组,因此您必须访问 myStrings[0]myStrings[1] 等值。
  • 我不明白。在哪里写?

标签: android arrays android-intent android-edittext textview


【解决方案1】:

我会写一个完整的答案。

Intent intent = new Intent(Save.this, Get.class);
String[] myStrings = new String[] { et.getText().toString() ,  et1.getText().toString() };
intent.putExtra("strings", myStrings);
startActivity(intent);

然后

Intent intent = getIntent();
String[] myStrings = intent.getStringArrayExtra("strings");

txt1=(TextView)findViewById(R.id.txt1);
txt1.setText(myStrings[0]);

txt2=(TextView)findViewById(R.id.txt2);
txt2.setText(myStrings[1]); 

或者您可以只加入字符串并将其传递给单个 TextView

Intent intent = getIntent();
String[] myStrings = intent.getStringArrayExtra("strings");

String joined = myStrings[0] + " - " + myStrings[1];

txt=(TextView)findViewById(R.id.txt);
txt.setText(joined);

希望这会有所帮助。


通常我会编写一个类来使用一些静态方法来处理 SharedPrenferences,例如:

public class Storage {

    public static String getName(Context context) {
        final SharedPreferences prefs = context.getSharedPreferences("com.my.package", Context.MODE_PRIVATE);
        return prefs.getString("name", "");
    }

    public static void setName(Context context, String name) {
        final SharedPreferences prefs = context.getSharedPreferences("it.enrichman.bolloauto", Context.MODE_PRIVATE);
        prefs.edit().putString("name", name).commit();
    }

}

您可以尝试在第一个活动中第一次存储它,然后在第二个活动中检索它。使用 Toast 进行测试。

【讨论】:

  • TextView 只显示 et.getText().toString(), et1.getText().toString() 那些不显示我写的文本
  • 您可以只使用一个 TextView。已编辑。 :)
  • 查看我的代码。你已经在双引号之间包裹了et1.getText().toString(),比如"et1.getText().toString()"。你不必!
  • 它工作正常。这是保存到某个地方。我需要稍后获取此保存数据
  • 您可以将此数据保存在 SharedPreferences 中。
【解决方案2】:

此代码运行正常。

    scrollview=(ScrollView)findViewById(R.id.scrollview1); 
    tb2.setTextSize(30); 
    tb2.setMovementMethod(new ScrollingMovementMethod());
    scrollview.post(new Runnable() { 
    public void run() { 
        scrollview.fullScroll(View.FOCUS_DOWN);  
        }
    }); 
    chat1.setOnClickListener(new OnClickListener() { 
        public void onClick(View v) { 
         {
             textsaring1=edt1.getText().toString();
             tb2.setText(tb2.getText()+" "+textsaring1);
             edt1.setText(" ");
        } 
        }
    }); 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 2018-06-10
    • 1970-01-01
    相关资源
    最近更新 更多