2016-07-25 8 views
0

以下は私のアプリケーションを終了するためのコードです。Androidでどこにグローバルメソッドを置くのですか?

私は1つ以上のアクティビティを持っているので、すべてのアクティビティに使用できるように、exitBy2Click()をどこに置くべきですか?

「グローバル」という新しいクラスを作成しようとしましたが、public exitBy2Click()ですが、Toast.makeText(this,...は機能しません。

ありがとうございました。あなたの方法を確認する

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(keyCode == KeyEvent.KEYCODE_BACK) { 
     exitBy2Click(); 
    } 
    return false; 
} 

private static Boolean isExit = false; 

private void exitBy2Click() { 
    Timer tExit = null; 
    if (!isExit) { 
     isExit = true; 
     Toast.makeText(this, "click again to quit", Toast.LENGTH_SHORT).show(); 
     tExit = new Timer(); 
     tExit.schedule(new TimerTask() { 
      @Override 
      public void run() { 
       isExit = false; 
      } 
     }, 2000); 

    } else { 
     finish(); 
     System.exit(0); 
    } 
} 

答えて

3

、私はあなたの「本当の」、そして、代わりにonKeyDown()

public class BaseActivity extends Activity { 

    private static Boolean isExit = false; 

    @Override 
    public void onBackPressed() { 
     exitBy2Click(); 
    } 

    public void exitBy2Click() { 
     Timer tExit = null; 
     if (!isExit) { 
      isExit = true; 
      Toast.makeText(this, "click again to quit", Toast.LENGTH_SHORT).show(); 
      tExit = new Timer(); 
      tExit.schedule(new TimerTask() { 
       @Override 
       public void run() { 
        isExit = false; 
       } 
      }, 2000); 

     } else { 
      finish(); 
      System.exit(0); 
     } 
    } 
} 

onBackPressed()を上書きすることができ、その下に最良の選択肢は、例に

注..継承だろうと思いますアクティビティは、BaseActivityとこのように、onKeyDownexitBy2Clickをすべてのクラスに一致させることができます。

public class MainActivity extends BaseActivity { 
    @override 
    public void onCreate(Bundle savedInstance) { 
    } 
} 

public class SecundaryActivity extends BaseActivity { 
    @override 
    public void onCreate(Bundle savedInstance) { 
    } 
} 

//ETC 
2

このコードを置くのに最適な場所は、文字通り「どこにも」ありません。 強制的にAndroidアプリを終了することはお勧めできません。また、System.exitを呼び出すことは、Androidアプリで行うべきことではありません。

関連する問題