【问题标题】:Displaying User Input after Button Press按下按钮后显示用户输入
【发布时间】:2012-01-20 05:47:19
【问题描述】:

我试图在按下“提交”按钮后显示用户输入。在按下提交按钮后,我创建了表单并添加了基本验证代码(文本、数字、字符串长度等)。这部分工作正常。

如果字段都有效,我希望提交按钮在新视图中显示输入。我还想添加一个功能,允许用户编辑他们的信息(在显示的输入下)。我不确定从哪里开始,主要是如何从 onClick 操作创建新视图以及如何将变量发送到该视图。我需要为此创建一个新的类和 XML 文件吗?如果是这样,最好的方法是什么?

编辑:

    public void sendFeedback(View button) {
    final EditText firstnameField = (EditText)this.findViewById(R.id.EditTextFirstName);
    String firstname = firstnameField.getText().toString();
    int fnlen=firstname.length();
    if (fnlen<=0){
        firstnameField.setError("Enter your first name");
    }

【问题讨论】:

    标签: java android input view


    【解决方案1】:

    您可以将这些用户输入字段添加到您的正常布局中,并将其可见性设置为不可见,例如 android:visibility="INVISIBLE"。然后一开始用户看不到它。

    在代码中,您可以再次将可见性设置为 VISIBLE,这些视图就会出现。

    findViewById(R.id.yourinvisibleview).setVisibility(View.VISIBLE);
    

    【讨论】:

      【解决方案2】:

      就我对 Android 开发的了解而言,您所要做的就是创建一个新的 Activity 并赋予它启动的意图。

      至于将值传递给新的类(活动),您可以使用构造函数并将要传递的值分配给类(活动)的私有或公共属性

      【讨论】:

      • 使用构造函数传递值不起作用afaik。您必须使用意图附加功能来传递价值。但这是一个可行的解决方案。
      • 在 Android 开发中不太好,:D 我更喜欢 iOS 类型,在栅栏的那一边生活要简单得多
      • 我用代码编辑了上一篇文章。我将在哪里添加意图操作?它会在该功能内还是新功能内?
      【解决方案3】:

      要将值传递给新的 Activity,您需要使用 Intent 。

      Intent intent = new Intent(MyActivity.this,NextActivity.class);
      intent.putExtra(key1,value1);
      intent.putExtra(key2,value2);
      

      等等..

      并在你的 NextActivity 中获取数据使用

      getIntent().getStringExtra(key1); // for String values
      getIntent().getBooleanExtra(key2,false); // for Boolean values
      

      有关 Intent Check 的更多信息Intents

      【讨论】:

      • 这就是我现在正在努力实现的。一些教程提到了“AndroidManifest.xml”文件。我看到了,但我需要改变它吗?
      • 如果你添加一个已启动的新活动,那么你必须在清单中添加这个活动。
      【解决方案4】:

      第一种解决方案: 您使用一个活动和一个 xml 布局。 在布局 XML 中添加两个按钮(EDIT 和 VALIDATE):

      android:visibility="gone"
      

      在 SUBMIT OnClickListener 中,简单地将所有可编辑的 EditText 设为不可编辑,如下所示:

      ((EditText) findViewById(R.id.date)).setKeyListener(null);
      

      并使提交按钮不可见,编辑和验证可见:

      ((Button) findViewById(R.id.submit)).setVisibility(View.GONE);
      ((Button) findViewById(R.id.edit)).setVisibility(View.VISIBLE);
      ((Button) findViewById(R.id.validate)).setVisibility(View.VISIBLE);
      

      在 Edit OnClickListener 中,您还原:

      KeyListener keyListener =  new KeyListener() {
      
                      @Override
                  public boolean onKeyUp(View view, Editable text, int keyCode, KeyEvent event) {
                      // TODO Auto-generated method stub
                      return false;
                  }
      
                  @Override
                  public boolean onKeyOther(View view, Editable text, KeyEvent event) {
                      // TODO Auto-generated method stub
                      return false;
                  }
      
                  @Override
                  public boolean onKeyDown(View view, Editable text, int keyCode,
                          KeyEvent event) {
                      // TODO Auto-generated method stub
                      return false;
                  }
      
                  @Override
                  public int getInputType() {
                      // TODO Auto-generated method stub
                      return 0;
                  }
      
                  @Override
                  public void clearMetaKeyState(View view, Editable content, int states) {
                      // TODO Auto-generated method stub
      
                  }
              };
      
          ((EditText) findViewById(R.id.date)).setKeyListener(keyListener);
          ...
          ((Button) findViewById(R.id.submit)).setVisibility(View.VISIBLE);
          ((Button) findViewById(R.id.edit)).setVisibility(View.GONE);
          ((Button) findViewById(R.id.validate)).setVisibility(View.GONE);
      

      然后在 VALIDATE OnClickListener 中进行真正的提交。

      第二个解决方案: 您创建一个新活动和一个新布局,只是为了显示值。您按如下意图将值传递给第二个活动:

      String data = "somedata";
      Intent intent = new Intent(this, YourSecondActivity.class);
      intent.putExtra("firstData", data);
      startActivity(intent);
      

      您从第二个活动中检索数据,如下所示:

      Bundle extras = getIntent().getExtras();
      String data = extras.getString("firstData");
      

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2012-07-24
        • 2020-11-02
        • 2013-08-13
        • 1970-01-01
        • 1970-01-01
        • 2017-08-27
        • 2013-08-25
        • 1970-01-01
        相关资源
        最近更新 更多