【问题标题】:Fragment depending on another fragment in android片段取决于android中的另一个片段
【发布时间】:2013-09-28 06:52:10
【问题描述】:

我对 Android 编程非常陌生。以下是我正在做的事情: 我有一个编辑文本框。当它成为焦点时,我想显示一个自定义数字键盘。为了实现这一点,下面是代码 sn-ps: 布局文件:

<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。你能告诉我哪里出错了。

谢谢

【问题讨论】:

  • 更多信息。我意识到我的错误,但我不知道如何解决这个问题。 FragmentActivity 有一个 ViewPager 类型的成员变量,我有 setContentView(mViewPager) - 而不是 setContentView(R.id.activity_twopane)。但是,我确实有 mViewPager.setId(R.id.activity_twopane)。因此,findViewById(R.id.keyPadFragmentContainer) 返回 null。
  • 意图是当 EditText 处于焦点时,页面应该在顶部显示 EditText 和其他小部件,在底部显示键盘。
  • 我找出了我的错误和解决方案。由于我是这个论坛的新手,我将不得不等待 8 小时才能提供解决方案。简短的回答是,在布局文件中,我有一个 ViewPager 和一个 FarmLayout(用于数字键盘)。通过这种更改并将 ParentActivity 中的内容视图设置为 twopanelayout,我能够让它工作。
  • 您是否也考虑过展示您自己的自定义键盘?
  • 对于我的应用程序,我需要一种只输入数字(整数和小数,有符号/无符号)的方法 - 所以我有自己的自定义数字键盘,其中包含一组数字 +/-, 。和交流电(全部明确)

标签: android android-fragments android-activity


【解决方案1】:

如果您需要的只是数字,那么已经有一种方法可以在没有任何自定义的情况下做到这一点。它被称为输入类型。

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

例子:

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

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

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

【讨论】:

  • 感谢安卓开发者的反馈。数字键盘具有自定义的外观和感觉 - 类似于其中一个链接(您提到的第二个链接)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 2011-08-19
相关资源
最近更新 更多