0

fragmentsビューとビューの奇妙なセットアップがあり、基本的に、特定のビューが でeditTextあるたびにフラグメントを削除する必要があります。editTextclicked

これは機能しますが、約 80% の確率でしか機能しません。

失敗する残りの 20% の時間は、もう一度クリックすると 100% 非表示になります。

初めて叩いたときは、キーボードが飛び出す前に反応してフラグメントを隠すのに十分な時間がないようです。

私のxmlには、Clickableがtrueに設定され、onClickが非表示に設定されています。

私のJavaはここにあります:

public void hide(View view) {

        FragmentTransaction transaction = getSupportFragmentManager()
                .beginTransaction();

        try {
            transaction.remove(timerFragment);
            transaction.commit();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

何か案は?

4

3 に答える 3

1

別のトピックで問題を解決することになりました。onClick の代わりに onTouch メソッドが必要でした。ここを見てください: onClick イベントがトリガーされていません | アンドロイド

于 2012-08-10T08:10:51.293 に答える
0

お役に立てば幸いです。

これを試して..

    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);    

    final EditText ed1=(EditText)findViewById(R.id.editText1);
        final EditText ed2=(EditText)findViewById(R.id.editText2);



    ed1.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
        // TODO Auto-generated method stub
        call();
        return false;
        }
        });

    ed2.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
        // TODO Auto-generated method stub
        cal();
        return false;
        }
        });
}

public void call() {
        // TODO Auto-generated method stub
        Toast.makeText(getBaseContext(), "Hi", Toast.LENGTH_SHORT).show();
        //insert your codes here..
    }

    public void cal() {
        // TODO Auto-generated method stub
        Toast.makeText(getBaseContext(), "Hello", Toast.LENGTH_SHORT).show();
        //insert your codes here..
    }

私のxmlファイルは次のとおりです。

<EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
<requestFocus />
    </EditText>
于 2012-08-03T05:04:59.930 に答える
0

あなたには 2 つの潜在的な問題があり、それらを解決するための努力を 1 つずつ分解する必要があるようです。最初のタスクは、クリック ハンドラーが常に 100% 動作することを確認することです。それができたら、フラグメント コードの信頼性が 100% であることを確認してください。

フラグメントについて:

以前にFragmentTransactionをブロックに入れている人を見たことがなくtry、呼び出している関数は何もスローしません (ドキュメントによると)。あなたのcatchブロックは到達可能ですか?

メソッドの名前はhide(). フラグメントを表示および非表示にし、追加または削除しないだけで十分でしょうか?

于 2012-08-03T06:33:05.013 に答える