- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 Android 中,当我从 Chrome、Gmail 和收件箱复制文本时,我的 onPrimaryClipChangedlistener 方法被调用了 3 次,而当我在另一个应用程序(如 WhatsApp 中复制一些文本或按预期保留此方法时,仅被调用一次。
示例:在 Chrome 中复制一些文本将导致以下输出:
result: vô giá trị
result: chữ
result: chữ
奇怪的事情是,当从链接或页面的 URL 复制一些文本时,该方法只被调用一次!所以只有当我从网站的“正文”复制文本时才会发生这种情况。
是否有一种优雅且“官方”的方式来解决这个问题?我已经在 stackoverflow 中阅读了关于这个主题的几个答案,但似乎没有什么能解决我的问题。
正如我所说,这个问题似乎只影响某些应用程序,那么这是否意味着其他应用程序出现了问题?
这是我的代码
ClipboardManager mClipboard;
static boolean bHasClipChangedListener = false;
ClipboardManager.OnPrimaryClipChangedListener mPrimaryChangeListener = new ClipboardManager.OnPrimaryClipChangedListener() {
public void onPrimaryClipChanged() {
updateClipData();
}
};
@Ghi đè
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
registerPrimaryClipChanged();
}
@Ghi đè
protected void onDestroy() {
super.onDestroy();
unregisterPrimaryClipChanged();
}
void updateClipData() {
ClipData clip = mClipboard.getPrimaryClip();
ClipData.Item item = clip.getItemAt(0);
Log.d(LogUtils.BASIC_LOG, "result: " + item.getText());
}
private void registerPrimaryClipChanged(){
if(!bHasClipChangedListener){
mClipboard.addPrimaryClipChangedListener(mPrimaryChangeListener);
bHasClipChangedListener = true;
}
}
private void unregisterPrimaryClipChanged(){
if(bHasClipChangedListener){
mClipboard.removePrimaryClipChangedListener(mPrimaryChangeListener);
bHasClipChangedListener = false;
}
}
1 Câu trả lời
根据@septemberboy7 的评论建议
I have done something to work. remove primary clip listener and re add again after 500ms by using Handler.
下面的代码缓解了这个问题:
void startPrimaryClipChangedListenerDelayThread() {
mClipboardManager.removePrimaryClipChangedListener(mListener);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Ghi đè
công khai void run() {
mClipboardManager.addPrimaryClipChangedListener(mListener);
}
}, 500);
}
在OnPrimaryClipChangedListener内部的onPrimaryClipChanged()回调中立即调用此方法,防止0.5s回调再次触发。不理想,但目前有效。
关于android - 多次调用 OnPrimaryClipChangedListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30154670/
Gần đây tôi đã thêm một số tệp .gif vào /drawable để có thể sử dụng chúng với các nút. Cách này hoạt động tốt (không có lỗi). Bây giờ khi tôi xây dựng lại/chạy ứng dụng của mình, tôi nhận được lỗi sau: Lỗi: Gradle: Đang thực thi
Có phương pháp nào trong Android để trả về đường dẫn dữ liệu lưu trữ nội bộ không? Tôi có 2 điện thoại thông minh Android (Samsung S2 và S7 Edge) mà tôi đã cài đặt một ứng dụng. Tôi muốn sử dụng sqlit nằm trong đường dẫn này
Câu hỏi này đã có câu trả lời tại đây: Sự khác biệt giữa "?android:" và "@android:" trong tệp xml bố cục Android là gì
Tôi chỉ muốn biết sự khác biệt thực sự giữa điện thoại Android phát triển, điện thoại Android gốc và điện thoại Android gốc. Chúng tôi không thể mua bộ công cụ phát triển từ cửa hàng thực tế hoặc bất kỳ nơi nào khác ngoại trừ Android Marketplace.
Tôi đang cố gắng đưa dự án này lên chuẩn mực kể từ khi Gradle được cập nhật. Đây là một dự án nhóm và sử dụng plugin android-apt. Tôi đã thực hiện các thay đổi cú pháp cần thiết (bộ xử lý biên dịch->thực hiện và apt->chú thích), nhưng trình biên dịch vẫn báo với tôi là có
Tôi mới làm quen với Android và Kotlin nên xin lỗi vì một vấn đề rất đơn giản cần giải quyết! Tôi đã tạo một ứng dụng cơ bản bằng cách sử dụng Navigation Architecture Component, sử dụng thanh điều hướng ở dưới cùng và ba tùy chọn điều hướng. Mỗi tùy chọn điều hướng sẽ trỏ tới một đoạn chuyên dụng.
Hiện tại tôi đang sử dụng SDK chính thức của Facebook dành cho Android. Tôi đang sử dụng ứng dụng mẫu nâng cao nhưng tôi không biết cách để nó lấy tường ứng dụng/luồng/trạng thái thay vì người dùng đã đăng nhập. Liệu điều này có thể thực hiện được không? Trong tình huống đó
Tôi gặp vấn đề khi tải tệp xuống, tôi có thể tải tệp xuống trong trình giả lập nhưng lại không tải được trên điện thoại của tôi. Tôi đã xác định quyền truy cập Internet và ghi vào thẻ SD. Tôi có một tệp doc trên máy chủ, nếu người dùng nhấp vào tải xuống. Nó tải tập tin xuống. Điều này hoạt động tốt trong trình mô phỏng nhưng
Câu hỏi này đã có câu trả lời ở đây: Sự khác biệt giữa gravity và layout_gravity trong Android là gì? (22 câu trả lời) Đã đóng 9
Có ai có thể cho tôi biết bộ nhớ đệm Android và bộ nhớ đệm ứng dụng là gì không vì khi chúng ta nói về ứng dụng dọn bộ nhớ đệm thì nó làm gì, khái niệm dọn bộ nhớ đệm là để dọn bộ nhớ đệm ứng dụng hay giống như quản lý bộ nhớ lưu trữ chính, RAM, bộ nhớ đệm khác nhau và theo như tôi biết thì bộ nhớ đệm
Giả sử các ứng dụng Foo và Eggs nằm trên cùng một thiết bị Android. Bất kỳ ứng dụng nào cũng có thể nhận được danh sách tất cả các ứng dụng trên thiết bị. Liệu một ứng dụng có thể biết được ứng dụng khác đã chạy hay chưa và chạy trong bao lâu không? 1 Câu trả lời
Tôi hơi bối rối, tôi chỉ thấy ví dụ từ Android sang PC hoặc ngược lại. Tôi cần tạo một ứng dụng Android để kết nối hai điện thoại (Android) để trò chuyện video. Tôi đang nghĩ, tôi biết
Được sử dụng để khóa màn hình theo chương trình bằng Android. Tôi có một số ý tưởng hay từ những câu hỏi trước đây về vấn đề này trên Stackoverflow và tôi đã làm khá tốt, nhưng khi tôi chạy đoạn mã đó, không có ngoại lệ hay lỗi nào cả. Ngoài ra, màn hình không bị khóa. Xin hãy sử dụng đoạn văn này
Tài liệu nói rằng: android:layout_alignParentStart Nếu đúng, làm cho cạnh bắt đầu của chế độ xem này khớp với cạnh bắt đầu
Tôi không biết sự khác biệt giữa hai tính chất và chiều cao này. Lấy TextView làm ví dụ, nếu tôi đặt layout_width thành wrap_content và đặt chiều rộng thành 50 dip, điều gì sẽ xảy ra? 1 Câu trả lời
Hai tính chất này liên quan với nhau như thế nào? Nếu tôi có android:noHistory="true", thì việc có android:finishOnTaskLaunch="true" có ý nghĩa gì không? Câu trả lời tốt nhất giả định rằng bạn có
Tôi mới làm quen với Android và đang cố gắng hiểu mã XML sau: Khi xem tài liệu trên developer.android.com, bạn sẽ thấy "starStyle" là hằng số trong R.attr, public static final
Trong đoạn mã sau, tại sao giao diện của nút radio lại thay đổi khi tôi đặt android:layout_width="fill_parent" và android:width="fill_parent" Tôi đang nói
Thật khó để biết nên hỏi gì ở đây. Câu hỏi này mơ hồ, không đầy đủ, quá rộng hoặc mang tính tu từ và không thể trả lời hợp lý theo hình thức hiện tại. Để được trợ giúp làm rõ vấn đề này để có thể mở lại, hãy truy cập trung tâm trợ giúp. Đóng 9
Giả sử tôi có một hàm fun myFunction(name:String, email:String){}, khi tôi gọi hàm này myFunction('Ali', 'ali@test.com ') thì thế nào
Tôi là một lập trình viên xuất sắc, rất giỏi!