1

我对 Android 编程很陌生。以下是我正在做的事情:我有一个 EditTextBox。当它成为焦点时,我想显示一个自定义数字键盘。为了实现这一点,以下是代码片段: 布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_twopane"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <FrameLayout android:id="@+id/fragmentContainer"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="3"/>

    <FrameLayout android:id="@+id/keyPadFragmentContainer"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
</LinearLayout>

在 Fragment 类中,定义了父 Activity 必须实现的 Callbacks 接口

public interface Callbacks {
   void onAnswerEditTextSelected(Fragment fragment);
}

向 EditText 添加了一个侦听器

mAnswerEditText.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {
      if(!mNumberPadShown) {
         mCallbacks.onAnswerEditTextSelected(QuizFragment.this);
      }
   });

在父活动中,我有以下内容:

@Override
public void onAnswerEditTextSelected(Fragment fragment) {
    FragmentManager fm  = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();

    Fragment numFragment = NumberPadFragment.newInstance(fragment);
    ft.add(R.id.keyPadFragmentContainer, numFragment);
    ft.commit();
}

在运行时,我得到 No view found for id 0x7f ...(classname:id/keyPadFragmentContainer) 片段 NumberPadFragment。你能告诉我哪里出错了。

谢谢

4

1 回答 1

0

如果它只是您需要的数字,那么已经有一种方法可以做到这一点而无需任何定制。它被称为输入类型。

它可以用 XML 或以编程方式完成。

例子 :

<EditText android:inputType="number" android:digits="0123456789." 
 .../> 

对于更多按钮,您可以创建自定义键盘,如下所示:

我很确定 API 演示也有一个示例。

于 2013-09-27T22:46:46.377 回答