简体   繁体   中英

start Activity B(called by onCreate of an Application Class's sub Class) on Top of Activity A(called by onResume of an Activity Class's sub Class)

I have 2 activities that involved in this question:

  1. LoginActivity: A Login in Screen (called by a subclass of Activity Class)

  2. Updater Activity: A Update Screen that show updating progress when new app version is availble (called by a subclass of Application Class)


This is what I want:

When the app FIRST LAUNCH, and if new version of the app is available, the UPDATER ACTIVITY should be on top of every activity include the Login Activity,

so it will be the first screen user see during first launch of the app.

only after the updating progress is done, the UPDATER ACTIVITY will be dismissed then Login Screen be on top.


However this is what actually happened:

The LOGIN ACTIVITY always on top of UPDATER ACTIVITY...

My Guess is that since the UPDATER ACTIVITY is called By APPLICATION CLASS's subClass, and the LOGINACTIVITY is called by an ACTIVITY CLASS sub class,

the Application class's method such as OnResume always get called before Activity onCreate Method, thus the LOGINACTIVITY always appear on top of UPDATER ACTIVITY,

I just wondering if there is anyway I could make my UPDATER ACTIVITY be on top of any activities including the LOGIN ACTIVITY?

//LoginActivity involved
public abstract ClassA extends Activity {
.....
.....
protected void onResume() {
    super.onResume();
    .....
    if(isAuthenticated){
        Intent intent = new Intent(this, LoginActivity.class)
            .putExtra(...)
    startActivityForResult(intent, XXX);
    }

}

}

====

//Updater Activity involved
public abstract class ClassB extends Application { 
....
....
....
public void onCreate() {
    super.onCreate();

    Intent updaterIntent = new Intent(this, UpdaterActivity.class);
    updaterIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(updaterIntent);

}

}

i have diffrent solution instent of activity create dialog box activity.

           public class ViewDialog {

    public void showDialog(Activity activity, String msg){
        final Dialog dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(true);
        dialog.setContentView(R.layout.updatedialog);

        TextView text = (TextView) dialog.findViewById(R.id.text_dialog);
        text.setText(msg);

        Button dialogUpdate = (Button) dialog.findViewById(R.id.update);
        Button dialogcancel = (Button) dialog.findViewById(R.id.cancel);
        Button dialogremindme = (Button) dialog.findViewById(R.id.remindeme);
        TextView textView= (TextView) dialog.findViewById(R.id.machhint1);
        TextView textView2= (TextView) dialog.findViewById(R.id.machhint2);

        textView2.setText("Your old version is : "+versionName);
        textView.setText("Current version in playstore : "+version);


        dialogcancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        dialogUpdate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object
                try {
                    SharedPreferences.Editor   editoradddetail1 = getSharedPreferences("later", MODE_PRIVATE).edit();

                    editoradddetail1.putString("days", "");

                    editoradddetail1.commit();
                    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
                } catch (android.content.ActivityNotFoundException anfe) {
                    later="";
                    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
                }
                dialog.dismiss();
            }
        });
        dialogremindme.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
             SharedPreferences.Editor   editoradddetail1 = getSharedPreferences("later", MODE_PRIVATE).edit();
                Date someDate = new Date(); // Or whatever
                Date dayAfter = new Date(someDate.getTime() + TimeUnit.DAYS.toMillis( 2 ));
                DateFormat dateFormat=new SimpleDateFormat("dd/MM/yyyy");

                String formattedDate=dateFormat.format(dayAfter);
                editoradddetail1.putString("days", formattedDate);

                editoradddetail1.commit();


                dialog.dismiss();
            }
        });

        dialog.show();

    }
}

//and xml is.

       <android.support.v7.widget.CardView
    android:layout_width="match_parent"


android:layout_height="250dp"
       xmlns:android="http://schemas.android.com/apk/res/android">
     <RelativeLayout
android:orientation="vertical"
android:layout_width="match_parent"

android:layout_height="250dp"
>
<RelativeLayout
    android:layout_width="match_parent"
    android:id="@+id/main"
    android:background="#FFed6904"
    android:layout_height="120dp">



    <TextView
        android:id="@+id/machhint"

        android:text="Note:- Your current Version Did Not Match"
        android:layout_width="match_parent"
        android:textColor="@color/white"
        android:textSize="13dp"
        android:layout_height="60dp" />

    <TextView
        android:id="@+id/machhint1"
        android:text="preschool version is"
        android:layout_width="wrap_content"
        android:textSize="13dp"
        android:textColor="@color/white"
        android:layout_below="@+id/machhint"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/machhint2"
        android:text="Your  Vertion  is :"
        android:layout_width="wrap_content"
        android:textColor="@color/white"
        android:textSize="13dp"
        android:layout_below="@+id/machhint1"
        android:layout_height="30dp" />



</RelativeLayout>
<RelativeLayout
    android:layout_width="match_parent"
    android:id="@+id/text1"
    android:layout_below="@+id/main"
    android:layout_height="40dp">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TEXTO"
    android:id="@+id/text_dialog"

    android:layout_marginTop="3dp"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="4dp"
    android:layout_marginBottom="3dp"
    android:textSize="18sp"
    android:textColor="#ff000000"
    android:layout_centerHorizontal="true"
    android:gravity="center_horizontal" />
</RelativeLayout>
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_below="@+id/text1"

    android:gravity="center_vertical|center_horizontal"
    android:layout_height="55dp">

<Button
    android:layout_width="wrap_content"
    android:layout_height="45dp"
    android:text="Update"
    android:id="@+id/update"
    android:gravity="center"



    android:layout_toLeftOf="@+id/remindeme"



  />
<Button
    android:layout_width="wrap_content"
    android:layout_height="45dp"
    android:text="Later"
    android:id="@+id/remindeme"

    android:gravity="center"


    android:layout_centerHorizontal="true"
    />
<Button
    android:layout_width="wrap_content"
    android:layout_height="45dp"
    android:text="Cancel"
    android:id="@+id/cancel"

    android:gravity="center"

    android:layout_toRightOf="@+id/remindeme"


    android:layout_centerHorizontal="true"
   />

</RelativeLayout>
    </RelativeLayout>
 </android.support.v7.widget.CardView>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM