gpt4 book ai didi

android - 如何防止通过蓝牙输入设备在一个 Activity 中接收到的输入传播到此 Activity 完成后开始的其他 Activity

转载 作者:行者123 更新时间:2023-11-29 21:36:40 25 4
gpt4 key购买 nike

我有一个应用程序,我在其中使用蓝牙扫描仪扫描输入。当我当前的 Intent 收到输入时,我设置结果并完成 Activity ,然后启动另一个 Intent 。但是,当我的 Activity 接收到输入并关闭时,然后当一个新 Activity 开始时,它不会让我扫描新输入,而是接受旧输入并继续前进。我该如何阻止它。这就是我在 onCreate() 中所做的:

  barcodeEntry = (EditText) findViewById(R.id.barcode_input);
barcodeEntry.requestFocus();
barcodeEntry.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {

}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void afterTextChanged(Editable s) {
Toast toast = Toast.makeText(getApplicationContext(),
"Received Scan", Toast.LENGTH_SHORT);
toast.show();
Intent returnIntent = new Intent();
returnIntent.putExtra(WorkflowUtil.EXTRA_ACTION, barcodeEntry.getText().toString());
setResult(RESULT_OK, returnIntent);
finish();
}
});

这是我在布局中的 EditText 声明的样子:

<EditText
android:id="@+id/barcode_input"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_marginTop="10dp"
android:background="#000000"
android:enabled="true"
android:inputType="text"
android:textColor="#000000"
android:textSize="20sp"
android:visibility="visible" />

我该如何阻止它。如果我阻止 View 在加载时获得焦点,它会起作用吗?

最佳答案

隐藏 View 软键盘的方法如下:

/** hides the soft keyboard for a specific view */
public static void hideSoftKeyboardFromFocusedView(final Context context, final View view)
{
final InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

可以做类似的事情来显示软键盘。

下面是如何强制将焦点放在 EditText 上,并由此显示软键盘,即使 View 已经获得焦点也是如此:

public static void forceFocusOnView(final View view) 
{
view.post(new Runnable()
{
@Override
public void run()
{
view.clearFocus();
view.post(new Runnable()
{
@Override
public void run()
{
view.requestFocus();
}
});
}
});
}

如果这不起作用,您可以使用:

public static void focusAndShowSoftKeyboardOnView(final View v) 
{
new Handler().post(new Runnable()
{
@Override
public void run()
{
v.requestFocus();
}
});
final InputMethodManager m = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
if (m != null)
m.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT);
}

关于android - 如何防止通过蓝牙输入设备在一个 Activity 中接收到的输入传播到此 Activity 完成后开始的其他 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18280634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com