0

ユーザーからテキストを取得できるいくつかの textEdits がありますが、データベースへの情報の更新に使用されるボタンも作成しました。

ユーザーがテキストを入力して、アクティビティ用に作成した「更新」ボタンを押したときにのみ更新できるように、キーボードで「戻る」または「完了」を押したときではなく、これを設定するにはどうすればよいですか。

私がやろうとしているのは、キーボードの「次へ」ボタンや「戻る」ボタンなどの他の方法で情報を更新する機能を削除することです。ページのカスタムメイドの更新ボタンを使用してこれを行う唯一の方法を残します。

1 つの提案は、キーストロークを消費することでした。consumer() メソッドのようなものを使用して。何か案は?

それが不可能なら、私はそのまま生きていきます。

以下は、editTexts コードの 1 つの例です。

     // get the text typed in the description and allow user to edit the text information for title
      titleText.setOnKeyListener(new EditText.OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
        //  if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)){
                String titleTemp = titleText.getText().toString();
                Intent i = getIntent();
                Bundle extras = i.getExtras();
                String filename2 = extras.getString("filename");
                String selection2 = MediaStore.Images.Media.DATA + "='" + filename +"'";
                ContentValues newValue = new ContentValues();
                newValue.put(MediaStore.Images.Media.TITLE, titleTemp);
                 getContentResolver().update(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, newValue, selection2, null);

                 Toast.makeText(Editor.this, "Updated Title to: " + titleTemp, Toast.LENGTH_SHORT).show();

         return true;
            }
 return false;
            }
        });
4

1 に答える 1

0

これが必要に応じて正確にエラーなしで機能することがわかりました。このさまざまな単純な問題を修正する必要はほとんどありませんでした。元の質問を投稿する必要はほとんどありませんでした。

// get the text typed in the description and allow user to edit the text information for title
       titleText.setOnKeyListener(new EditText.OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)){
                    String titleTemp = titleText.getText().toString();
                //  Intent i = getIntent();
                //    Bundle extras = i.getExtras();
                //    String filename2 = extras.getString("filename");
                //    String selection2 = MediaStore.Images.Media.DATA + "='" + filename +"'";
                //  ContentValues newValue = new ContentValues();
                //    newValue.put(MediaStore.Images.Media.TITLE, titleTemp);
                //     getContentResolver().update(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, newValue, selection2, null);

            //       Toast.makeText(Editor.this, "Updated Title to: " + titleTemp, Toast.LENGTH_SHORT).show();
                     return true;
                }
                 return false;
                }
            });

// 前述の更新ボタンに clicklistener を追加して、タイトルと説明の両方の編集テキストを更新します

updateIt.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                String titleTemp = titleText.getText().toString();
                String commentsTemp = commentsText.getText().toString();
                Intent i = getIntent();
                Bundle extras = i.getExtras();
                String filename3 = extras.getString("filename");
                String selection3 = MediaStore.Images.Media.DATA + "='" + filename3 +"'";
                ContentValues newValue2 = new ContentValues();
                newValue2.put(MediaStore.Images.Media.TITLE, titleTemp);
                newValue2.put(MediaStore.Images.Media.DESCRIPTION, commentsTemp);
                 getContentResolver().update(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, newValue2, selection3, null);
                Toast.makeText(Editor.this, "Updated Title to: " + titleTemp, Toast.LENGTH_SHORT).show();
                 Log.i(getClass().getSimpleName(), "Updated title");
                 //Toast.makeText(Editor.this, titleText.getText(), Toast.LENGTH_SHORT).show();
                 Toast.makeText(Editor.this, "Updated Description to: " + commentsTemp, Toast.LENGTH_SHORT).show();
                 Log.i(getClass().getSimpleName(), "Updated description");

            }
        });
于 2012-10-05T06:48:22.793 に答える