【问题标题】:Dynamic value passing from numeric EditText to String in same Activity在同一活动中从数字 EditText 传递到 String 的动态值
【发布时间】:2014-01-26 22:57:31
【问题描述】:

这是一个两部分的问题。首先,我有这个EditText,它被严格设置为用户只能通过android:inputType="number"输入数字。喜欢:

<EditText 
    android:id="@+id/edit_A1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:imeOptions="actionDone"
    android:inputType="number"
    android:hint="@string/zeroes" />

<TextView 
    android:id="@+id/act1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/act_string"
    android:layout_centerVertical="true"
    android:hint="000," />

我从中得到什么样的输出?是String还是Integer正常?

其次,我想设置TextView(上面的代码)这样​​当我输入数字到EditText并从出现的小键盘上点击OK按钮时,数字将立即出现在@ 987654329@。 EditTextTextView 都在同一个活动中。我有以下代码:

public static class MainSectionFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.main, container, false);

        EditText mAcu1ET = (EditText) rootView.findViewById(R.id.edit_A1);
        TextView mAcu1TV = (TextView) rootView.findViewById(R.id.act1);

        //????

        return rootView;
    }
}

创建视图。我应该实现什么样的onClickListener,这样我的TextView 会在EditText 数字键盘单击OK 按钮时更改其值?还在学习中,放轻松。

主题的标题可能令人困惑,抱歉!

【问题讨论】:

    标签: java android android-layout


    【解决方案1】:

    很遗憾,上述解决方案均无效。我在这里找到了解决方案:catching the "OK" button vs pressing "round-arrow" on EditText in Android

    总而言之,我的代码如下所示:

    public static class MainSectionFragment extends Fragment {
    
        private EditText mAcu1ET;
        private TextView mAcu1TV;
    
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {
                View rootView = inflater.inflate(R.layout.main, container, false);
    
                mAcu1ET = (EditText) rootView.findViewById(R.id.edit_A1);
                mAcu1TV = (TextView) rootView.findViewById(R.id.act1);
    
                mAcu1ET.setOnEditorActionListener(new OnEditorActionListener() {
                    @Override
                    public boolean onEditorAction( TextView v, int actionId, KeyEvent event ) {   
                            mAcu1TV.setText(mAcu1ET.getText().toString());
                         return false;
                    }
                });
                return rootView;
            }
        }
    

    感谢您的贡献! Raghandunan 以某种方式引导我,谢谢:)

    【讨论】:

      【解决方案2】:

      你可以使用OnKeyListener

      http://developer.android.com/reference/android/view/View.OnKeyListener.html

      mAcu1ETt.setOnKeyListener(new OnKeyListener() {
          @Override
          public boolean onKey(View v, int keyCode, KeyEvent event) {
              if (keyCode == KeyEvent.KEYCODE_ENTER) { 
                  /* do something */ 
              }
          }
       });
      

      【讨论】:

        【解决方案3】:

        编辑文本将始终为您提供字符串,但您可以将其类型转换为数字。

        mAcu1ET.getText().toString();
        

        代码:

        public static class MainSectionFragment extends Fragment {
        
            EditText mAcu1ET;
            TextView mAcu1TV;
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {
                View rootView = inflater.inflate(R.layout.main, container, false);
        
                mAcu1ET = (EditText) rootView.findViewById(R.id.edit_A1);
                mAcu1TV = (TextView) rootView.findViewById(R.id.act1);
        
                    mAcu1ET.setOnKeyListener(new OnKeyListener() {
        
                @Override
                public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
                    // TODO Auto-generated method stub
                    if(arg1==KeyEvent.KEYCODE_NUMPAD_ENTER){
        
                                         mAcu1ET.setText(mAcu1TV.getText().toString());
                                     }
                    return false;
                }
            });
        
                return rootView;
            }
        }
        

        【讨论】:

        • 我不能引用findViewById(R.id.ok),因为我的布局中没有这样的按钮。
        • 检查我编辑的答案。从 Raghunandan 那里得到这个想法,因为我之前没有得到 que
        【解决方案4】:

        点击按钮:

        String set = youreditText.getText().toString();
        yourtextView.setText(set);
        

        EditText,即使inputType 是数字,也只会给你数字的键盘配置。您总是需要getText().toString() 来获取输入。

        【讨论】:

          【解决方案5】:

          让我看看我明白了没有,你想写一个数字,按 OK 并在两个字段中看到那个数字?

          【讨论】:

          • public void setNumber(View view){ mAcu1TV.setText(mAcu1ET.getText().toString);我猜它会是这样的编辑:对不起,我无法设置代码类型文本
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-02
          • 1970-01-01
          • 1970-01-01
          • 2012-12-08
          相关资源
          最近更新 更多