Android Java: Làm cách nào để ngăn hộp thoại của tôi hiển thị tên ứng dụng MainActivity trong thời gian ngắn khi Hộp thoại đóng?


8

Tôi khá mới đối với phát triển Android và tôi đã tạo ra ứng dụng "thực" đầu tiên của mình, thực hiện như sau:

  • Ra mắt MainActivity
  • MainActivity xử lý Dữ liệu bổ sung và sau đó hiển thị một phần ViewDialogmở rộng Dialog. ViewDialogcó một showDialog()phương thức thực hiện như sau để thiết lập và hiển thị Dialog:

    protected void showDialog(final Activity activity)
    {
        dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(false);
        dialog.setContentView(dialog_layout);
    
        // Set background color of the dialog
        ConstraintLayout currentLayout = (ConstraintLayout) dialog.findViewById(R.id.Dialog);
    
        // setup of views etc ...
    
        // Finally dislay `Dialog`
        dialog.show();
    
        // Method called to start a `DialogTimer` which extends `CountDownTimer`
    }
  • MainActivity hiển thị ViewDialognhư sau:

     public class MainActivity extends AppCompatActivity {
         private static Context appContext;
         private static ViewDialog notify;
    
         protected void onCreate(Bundle savedInstanceState) {
    
             // methods and processing etc...        
    
             // time to display dialog 
             notify = new ViewDialog(mParameters, mThemeHandler );
    
             // ******************** Show dialog box *******************
             notify.showDialog(activity: this);   // showDialog just calls `Dialog.show()`
             notify.ApplyTheme();
         }
  • Khi hết giờ hoặc người dùng nhấn nút ViewDialogthì đóng và ứng dụng kết thúc với mã sau:

        mButton1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            CancelTimer();
            activity.finishAndRemoveTask();
            dialog.dismiss();

Vấn đề là khi ViewDialogbị loại bỏ, thỉnh thoảng tôi có thể thấy những gì trông giống như một thông báo đang hiển thị các hoạt động android:labelđược thiết lập trong tệp AndroidManifest.

Video về những gì đang xảy ra

Tôi không chắc tại sao điều này xảy ra, nhưng tôi cho rằng nó sẽ hiển thị một số mục của MainActivitybố cục khi các lần ViewDialogđóng sử dụng dialog_layouttệp bố cục của chính nó .

Tôi đã loay hoay với rất nhiều thứ khác nhau và thay đổi mã / bố cục, v.v. và tôi không thể tìm thấy lỗi của mình.

Một số gợi ý và gợi ý sẽ giúp tôi khắc phục điều này là gì? Tôi rất vui được cung cấp thêm chi tiết nếu cần.

Bố cục và tệp kê khai ở đây:


2
Khi bạn nói, thì hiển thị một tin nhắn, chính xác thì bạn đang nhìn thấy gì?
flopshot

2
Bạn có thể đăng bất kỳ ảnh chụp màn hình nào của tin nhắn bạn nhìn thấy sau khi Hộp thoại bị loại bỏ không?
Hamza

Ngoài ra, trong tệp Activity_main.xml của bạn, bạn đã đặt chiều rộng và chiều cao của bố cục chính 0dp. Chỉ cần làm cho nó mach_parent để nó có thể mở rộng qua tất cả các màn hình.
Hamza

1
@flopshot điện thoại và máy tính bảng chạy Android 5.1 và 9.0. BTW, tôi cũng ở Las Vegas .... :-)
Chimera

1
đi qua Liên kết này . hy vọng bạn sẽ tìm thấy thứ gì đó hữu ích
Alfaizkhan

Câu trả lời:


3

Bạn có thể đạt được điều này bằng cách đặt thuộc tính android: theme thành @android: style / Theme.NoTitleBar trên thành phần của bạn trong AndroidManifest.xml như thế này:

<activity android:name=".Activity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Cảm ơn bạn. Tôi sẽ cho nó nó một cơ hội.
Chimera

Đã cố gắng như vậy. Không hoạt động. Cảm ơn bạn đã cố gắng mặc dù. :-)
Chimera

Điều này "hoạt động" nhưng nó cũng hiển thị cửa sổ hoạt động chính trước khi hiển thị hộp thoại. Tôi muốn ứng dụng chỉ hiển thị hộp thoại ...
Chimera

2

Mã bạn đã đăng không đủ để tìm hiểu lý do tại sao điều này xảy ra, nhưng có một giải pháp phổ biến là không thấy tiêu đề Hoạt động (được đặt trong trường nhãn của bảng kê khai).

Khai báo trong tệp styleDB của bạn một chủ đề mới như

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="android:windowContentOverlay">@null</item>
</style>

và sau đó làm cho nó trở thành chủ đề của hoạt động của bạn như thế này

 <activity
           ...
           android:name="boha.notify.MainActivity"
           android:theme="@style/AppTheme.NoActionBar">
           ...
</activity>

Mặc dù tôi không chắc chắn 100 phần trăm (vì hành vi này có thể được thay đổi trong mã thực tế của hoạt động của bạn) Tôi nghĩ rằng nó có thể giúp ích.

Tôi mong nó sẽ có ích.


Cảm ơn Paul. Tôi sẽ cho nó nó một cơ hội.
Chimera

Paul, tôi đã thử nó và nó không hoạt động. Tôi đã nhận thấy rằng khi tôi đặt tiêu đề của hoạt động, trong mã sử dụng setTitle()thành một chuỗi rất dài, tôi có thể thấy rất rõ rằng "thông báo" giống như thông báo hiển thị khi hộp thoại đóng là tiêu đề của hoạt động chính. Tôi sẽ liên kết đến một video cho thấy những gì đang xảy ra sớm.
Chimera

Paul, bạn còn cần xem mã nào nữa không? Tôi không thể hiển thị tất cả các mã. Có lẽ tôi sẽ tạo một ví dụ tái tạo tối thiểu để đăng.
Chimera

2

Hóa ra nếu tôi thay đổi:

public class MainActivity extends AppCompatActivity {

đến

public class MainActivity extends Activity {

vấn đề biến mất Tôi không biết tại sao, nhưng tôi sẽ lấy nó.


2
notify.setOnDissmissListener({CancelTimer()
    activity.finishAndRemoveTask()
    dialog.dismiss()})

1
Cảm ơn bạn. Tôi cũng sẽ thử cái này
Chimera

1
Cảm ơn bạn một lần nữa, tôi đã thử nó. Không có sự khác biệt. Tôi phải làm điều gì đó sai về cơ bản.
Chimera
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.