Milan Gajera
Milan Gajera

Reputation: 970

Why my previous activity automatically refresh after click on back button of my application in android?

Explanation: My application having two activity namely Summary_Card and Score_Card. In which, i enabled this getSupportActionBar().setDisplayHomeAsUpEnabled(true); in the last activity accordingly to name given.

I passed the data from Summary_card to GetValue.java through Intent.I also passed the data from Getvalue.java to Score_card through Intent.In Score_card i got that data which was send from GetValue.java. I explained my whole scenario.

Getvalue is a class not an activity.

Explanation the problem which i going to get according to my implemented scenario.

When i press back button of Score_card which reside on actionBar. I refreshed my Summary_card i mean my previous activity.Similarly, when i press back button of my device(Mobile) my previous_activity not refreshed.

I don't want to refresh my previous(Summary_card) activity after pressing back button of my current activity(Score_card) which reside on actionBar (not device back button).

What is the solution of this problem?

Here, is my summary_card. Summary_card provide the data to GetValue.java class.

public class SummaryCard extends AppCompatActivity {
    Toolbar toolbar;
    Button btnFullScore;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_summary_card);

        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        Intent extras = getIntent();

        btnFullScore = (Button) findViewById(R.id.FullScore);

        btnFullScore.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                GetValue gv = new GetValue(getApplicationContext());
                gv.setFullUrl(match_key);
                gv.setAccessToken(access_token);
                gv.execute();
            }
        });
    }
}

Here, is my GetValue.java consider as Summary_card. I set the data for score_card from GetValue.java class.

public class GetValue extends AsyncTask<String,String,String> {

    private static String url="";

    String match_type="";
    String[] tab_title;
    String[] team_name;
    String bat_order="",jsonStr="";
    String tabTeamname="";
    String name_of_team="";
    String tabData="";
    String match_key="";
    List<String> lst_overview=null;

    public String access_token="";
    public String accessToken="";

    String st_overview="",short_name="",msg_info="";

    Context context;
    public String tabVlaue="";

    public GetValue(Context context)
    {
        this.context=context;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected String doInBackground(String... params) {

        match_key=getFullUrl();
        accessToken=getAccessToken();
        url="https://api.litzscore.com/rest/v2/match/"+match_key+"/?access_token="+accessToken;
//        url="http://10.0.2.2/JSON/SaEngfullcard.php";
        jsonStr=new CallAPI().GetResponseGetMethod(url);
        if(jsonStr!=null){
            try {
                JSONObject mainObject = new JSONObject(jsonStr);
                JSONObject dataObject = mainObject.getJSONObject("data");
                JSONObject cardObject = dataObject.getJSONObject("card");

                lst_overview=new ArrayList<>();
                if(cardObject.getString("status_overview").equals("abandoned")){

                    if(!cardObject.isNull("msgs")) {
                        JSONObject msgs=cardObject.getJSONObject("msgs");

                        msg_info=msgs.getString("info");
                    }
                    st_overview=cardObject.getString("status_overview");
                    short_name=cardObject.getString("short_name");
                }
                else {

                    match_type = cardObject.getString("format");
                    JSONArray batting_order = cardObject.getJSONArray("batting_order");

                    JSONObject innings = cardObject.getJSONObject("innings");
                    JSONArray inn_arr = innings.names();

                    for (int i = 0; i < batting_order.length(); i++) {
                        JSONArray ining_arr = batting_order.getJSONArray(i);
                        tabTeamname += ining_arr.getString(0) + ":";
                        for (int j = 0; j < ining_arr.length(); j++) {
                            if (j == 0) {
                                tabVlaue += ining_arr.getString(j) + "_";
                            }
                            if (j == 1) {
                                tabVlaue += ining_arr.getString(j);
                            }
                        }
                        tabVlaue += ",";
                        bat_order = tabVlaue;
                    }
                    tab_title = bat_order.split(",");

                    if (match_type.equals("test") || match_type.equals("one-day")) {
                        for (int j = 0; j < tab_title.length; j++) {
                            for (int k = 0; k < inn_arr.length(); k++) {
                                if (tab_title[j].equals(inn_arr.getString(k))) {
                                    tabData += innings.getJSONObject(inn_arr.getString(k)) + "`";
                                }
                            }
                        }
                    }
                    if (match_type.equals("t20")) {
                        tabData = "";
                        for (int j = 0; j < tab_title.length; j++) {
                            if (j == 0) {
                                for (int k = 0; k < inn_arr.length(); k++) {
                                    if (tab_title[0].equals(inn_arr.getString(k))) {
                                        tabData = innings.getJSONObject(inn_arr.getString(k)) + "`";
                                    }
                                }
                            } else if (j == 1) {
                                for (int k = 0; k < inn_arr.length(); k++) {
                                    if (tab_title[1].equals(inn_arr.getString(k))) {
                                        tabData += innings.getJSONObject(inn_arr.getString(k)) + "`";
                                    }
                                }
                            } else if (j == 2) {
                                for (int k = 0; k < inn_arr.length(); k++) {
                                    if (tab_title[2].replace("2", "superover").equals(inn_arr.getString(k))) {
                                        tabData += innings.getJSONObject(inn_arr.getString(k)) + "`";
                                    }
                                }
                            } else if (j == 3) {
                                for (int k = 0; k < inn_arr.length(); k++) {
                                    if (tab_title[3].replace("2", "superover").equals(inn_arr.getString(k))) {
                                        tabData += innings.getJSONObject(inn_arr.getString(k)) + "`";
                                    }
                                }
                            }
                        }
                    }
                    JSONObject teams = cardObject.getJSONObject("teams");

                    JSONArray team_arr = teams.names();

                    team_name = tabTeamname.split(":");
                    for (int i = 0; i < team_name.length; i++) {
                        for (int j = 0; j < team_arr.length(); j++) {
                            if (team_name[i].equals(team_arr.getString(j))) {
                                name_of_team += teams.getJSONObject(team_arr.getString(j)) + "=";
                            }
                        }
                    }
                }
            }
            catch (JSONException e){
                e.printStackTrace();
            }
        }
        else{
        }
        return null;
    }
    public void setFullUrl(String str){
        match_key=str;
    }
    public String getFullUrl(){
        return match_key;
    }

    public void setAccessToken(String accessToken){
        this.access_token=accessToken;
    }
    public String getAccessToken(){
        return this.access_token;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);

        if(st_overview.equals("abandoned"))
        {
            DialogAbandoned ad=new DialogAbandoned(context);
            ad.setDialog(short_name,msg_info+".");
        }
        else {
            Intent intent = new Intent(context, ScoreCard.class);
            intent.putExtra("tabvalue", tabVlaue);
            intent.putExtra("teamName", name_of_team);
            intent.putExtra("tabData", tabData);
            intent.putExtra("match_key", match_key);
            intent.putExtra("access_token",accessToken);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        }
    }
}

Here, is my score_card

public class ScoreCard extends AppCompatActivity {

    Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_score_card);


        toolbar=(Toolbar)findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        Intent i=getIntent();
        tab_value=i.getStringExtra("tabvalue");
        tabData=i.getStringExtra("tabData");
        name_of_team=i.getStringExtra("teamName");
        match_key=i.getStringExtra("match_key");
        access_token=i.getStringExtra("access_token");
    }
}

In above class i got the data which was sent from GetValue.java

Here, is my manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.angelnx.cricvilla.cricvilla">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/MyMaterialTheme">
        <activity
            android:name=".SplashScreen"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"></activity>
        <activity android:name=".NotStartedMatchDetails">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity"></meta-data>
        </activity>
        <activity
            android:name=".SummaryCard"
            android:theme="@style/MyMaterialTheme"
            android:parentActivityName=".MainActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity" />
        </activity>
        <activity android:name=".ScoreCard"
            android:parentActivityName=".SummaryCard">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".SummaryCard" />
        </activity>
        <activity android:name=".PlayerInfoDetails"
            android:parentActivityName=".MainActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity" />
        </activity>
        <activity android:name=".FullScore"></activity>
        <!-- ATTENTION: This was auto-generated to add Google Play services to your project for
             App Indexing.  See https://g.co/AppIndexing/AndroidStudio for more information. -->
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
    </application>

</manifest>

Now, again i discus my problem. Problem :I don't want to get the refresh my previous activty(Summary_Card) after pressing the back button of my score_card.

Please, help me to solve out this problem

Upvotes: 1

Views: 1387

Answers (1)

user5716019
user5716019

Reputation: 598

If We want to go to NewActivity.java from CurrentActivity.java and Don't want that our CurrentActivity.java got refereshed than do as blow :

Intent intent=new Intent(CurrentActivity.this,NewActivity.class);
startActivity(intent);

Not using finish(); here because, we have to come back from NewActivity to our CurrentActivity.

Now, When we want to come back from NewActivity to our CurrentActivity, then on the Click event of Back button just write finish(); and don't do like below :

Intent intent=new Intent(NewActivity.this,CurrentActivity.class);
startActivity(intent);

because it will reopen your CurrentActivity.

Upvotes: 1

Related Questions