1

當我試圖顯示一個片段時,我遇到了關閉我的活動的問題。我試圖讓我的應用程序要求用戶在按下後退按鈕從主屏幕退出我的應用程序時評價我的應用程序。這應該顯示一個片段,要求現在或以後對其進行評分。該片段出現約1秒,然後應用程序關閉,用戶可以做出選擇。我該如何解決?如何防止後退按鈕從主要活動中關閉應用程序?

+0

對不起。我無法讓第一個覆蓋語句正確發佈。這在你的主要活動中。 –

+0

感謝您的分享,但可以請您1)清理您的代碼格式,並2)使這個帖子的「問題」部分成爲一個真正的問題,然後提供一個單獨的答案? –

+0

@medic_ma IMO,問題應該是在問題部分,並在答案部分的答案。如果我是你,我會提出一個我面臨的問題,我會用我提出的解決方案回答同樣的問題。這是這個網站的工作原理。 –

回答

0

這是我想出瞭解決方案:

我要告訴你我做了什麼來實現的片段,以及如何阻止我從關閉活動繞過片段。

在我的主要活動我說:

@Override 
public void onBackPressed() { 
    final DialogFragment rate = new RateMe(); 
    rate.show(getSupportFragmentManager(), "Rate"); 
} 

務必從覆蓋除去超語句從當返回按鈕被按下完全關閉您的應用程序停止按下按鈕。

我用一個名爲「RateMe」的XML創建了一個空白片段活動。刪除「Hllo World」後,我留下了xml空白,但請務必仔細檢查您的工具:context =。這是我犯的一個錯誤,它與我的軟件包不匹配。簡單的修復。只需將其更改爲您的軟件包名稱。

然後在該片段中,我把:

public class RateMe extends DialogFragment { 

public static RateMe newInstance(int title) { 
    RateMe frag = new RateMe(); 
    Bundle args = new Bundle(); 
    // args.putInt("title", title); 
    frag.setArguments(args); 
    return frag; 
} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setCancelable(false); 
    builder.setTitle("Rate Me"); 
    builder.setMessage(R.string.Rate); 

//創建您的RES值的strings.xml文件中的字符串。這將是你的片段出現^^^^然後通過添加繼續你//R.string ......

builder.setPositiveButton("Yes, I Will", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 

      Uri uri = Uri.pa(RateMe.this);rse("market://details?id=****PUT YOUR GOOGLE PLAY URL INFO HERE"); 
      Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri); 
      myAppLinkToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | 
        Intent.FLAG_ACTIVITY_NEW_DOCUMENT | 
        Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
      try { 
       startActivity(myAppLinkToMarket); 
      } catch (ActivityNotFoundException e) { 
       Toast.makeText(getContext(), " unable to find market app", Toast.LENGTH_LONG).show(); 
      } 

     } 
    }); 
    builder.setNegativeButton("Not Now", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      System.exit(0); //this will close the application 
     } 
    }); 
    return builder.create(); 
} 

}

這非常適合我。希望這可以幫助某人。

相關問題