android 높이 - 컨텍스트에 대한 참조 만있을 때 현재 활동 닫기



안드로이드 툴바 (7)

Context 대한 참조가있는 경우 현재 활동을 완료 할 수 있습니까?

현재 활동에 대한 언급이 없습니다.


Answers

완료하려는 활동의 실행중인보기에 대한 액세스 권한이있는 경우 (예 : 클릭 수신기에있는 경우) 다음을 수행 할 수 있습니다.

((Activity)getContext()).finish();

(2red13 덕분에 나를 여기에 데려다 주었다.)


네, 캐스트와 함께 :

((Activity) ctx).finish();

나는 환경 설정 활동을 닫을 때 같은 문제가 있었다. 여기 내가 한 일이있다.

public class T2DPreferenceActivity extends PreferenceActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
          getFragmentManager().beginTransaction().replace(android.R.id.content,
                new T2DPreferenceFragment()).commit();
    }

    public static class T2DPreferenceFragment extends PreferenceFragment {
        @Override
        public void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.server_screen_preference);
            Preference testServicePreference = getPreferenceScreen().findPreference("PREFERRED SERVER");
            testServicePreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
                    T2DPreferenceActivity.closeActivity(getActivity());
                    return true; //returning true still makes the activity handle the change to preferences
                }
            });
        }

        public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
            ListView lv = (ListView)view.findViewById(android.R.id.list);
            ViewGroup parent = (ViewGroup)lv.getParent();
            parent.setPadding(0, 100, 0, 0);
        }
    }

    protected static void closeActivity(Activity activity) {
        activity.finish();
    }
}

시험:

((Activity) context.getApplicationContext()).finish();

나는 그것이 오래 된 포스트라는 것을 알고 있지만 아마도 이것을 다음과 같이 부르는 것이 좋습니다.

if(context instanceof Activity){
                ((Activity)context).finish(); }

이 방법으로 우리는 불필요한 ClassCastExceptions를 얻지 않도록합니다.


다음을 사용하여 활동을 시작한 경우 :

startActivityForResult(i, 1);

다음과 같이 finishActivity (1)를 호출하여 해당 요청 코드로 시작된 모든 작업을 완료 할 수 있습니다.

((Activity)getContext()).finishActivity(1);

제 경우에는 postDelayed 핸들러에서 하나를 사용해야합니다. 이것을 사용하면 어떤 활동을 마무리하고 있는지 확인할 수 있습니다. 희망이 도움이됩니다!


FirstActivity 에서 startActivityForResult() 메소드를 사용하여 FirstActivity 호출합니다.

예 :

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);

SecondActivity 하는 데이터를 설정하십시오. 돌아오고 싶지 않은 경우 아무 것도 설정하지 마십시오.

예를 들어, secondActivity에서 데이터를 다시 보내려는 경우 :

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();

데이터를 반환하지 않으려면 다음을 수행하십시오.

Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();

이제 FirstActivity 클래스에서 onActivityResult() 메서드에 대한 다음 코드를 작성합니다.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {
        if(resultCode == Activity.RESULT_OK){
            String result=data.getStringExtra("result");
        }
        if (resultCode == Activity.RESULT_CANCELED) {
            //Write your code if there's no result
        }
    }
}//onActivityResult




android android-activity android-context