Nice programing

조각 내에서 토스트 사용

nicepro 2020. 12. 31. 23:26
반응형

조각 내에서 토스트 사용


사용자가 조각 안의 버튼을 클릭 할 때 토스트 메시지를 표시하려고합니다. 문제는 토스트를 표시하기 위해 활동에 액세스 할 수 없다는 것입니다.

출처는 다음과 같습니다 Fragment.

    public class FrgTimes extends Fragment
    {
        ScrollView sv;
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) 
        {
            if (container == null) { return null; }

            sv = (ScrollView)inflater.inflate(R.layout.frg_times, container, false);

            btnTime1.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

            //******  HERE's the PROBLEM  ********
            Toast.makeText(<The Activity>, "Please long press the key", Toast.LENGTH_LONG );

            }});

            return sv;
        }

그리고 여기 내가 시도한 것입니다.

Toast.makeText( getActivity()  , ...
Toast.makeText( getView().getContext()  , ...
Toast.makeText( getActivity().getApplicationContext()  , ...
Toast.makeText( sv.getContext()  , ...
Toast.makeText( sv.getRootView().getContext()  , ...

디버그에서이 모든 코드가 예외없이 실행되지만 TOAST표시 되지 않는 것을 볼 수 있습니다 .


당신은 당신이 창조하고 show()있는 Toast부르는 것이 아닙니다 makeText().


alfo888_ibg에서 언급 한 바와 같이 :

@Override
public void onClick(View arg0) {
   Toast.makeText(activity,"Text!",Toast.LENGTH_SHORT).show();
}

그냥 해:

    Toast.makeText(getActivity(),"Text!",Toast.LENGTH_SHORT).show();

이것은 나를 위해 일했습니다.


같은 문제를 가진 다른 사람들을 돕기 위해 Use Toast inside Fragment에 대한 완전한 대답은 다음과 같습니다.

Activity activity = getActivity();

@Override
public void onClick(View arg0) {

    Toast.makeText(activity,"Text!",Toast.LENGTH_SHORT).show();
}

조각으로 토스트를 만들 때 다음을 수행하십시오.

Toast.makeText(getActivity(),"Message", Toast.LENGTH_SHORT).show();

클래스가 프래그먼트를 확장 할 때 프래그먼트는 액티비티 하위 클래스 이므로 getActivity () 를 사용해야 합니다.

건배


getActivity ()를 사용하여 현재 활동을 가져올 수 있습니다.

Toast.makeText(getActivity(),"Toast your message" ,Toast.LENGTH_SHORT).show();

조각 안에 건배 만들기

 Toast.makeText(getActivity(), "Your Text Here!", Toast.LENGTH_SHORT).show();

또는

    Activity activityObj = this.getActivity();

    Toast.makeText(activityObj, "Your Text Here!", Toast.LENGTH_SHORT).show();

또는

Toast.makeText(this, "Your Text Here!", Toast.LENGTH_SHORT).show();

user2564789 말이 맞았
지만 토스트가 이렇게 보이게 할 this에서도 사용할 수 있습니다getActivity()


     Toast.makeText(this,"Message",Toast.LENGTH_SHORT).show();
    


Android 조각 내에서 Toast를 호출 할 때 :

1. Activity mActivity=this.getActivity();  

2. Toast.makeText(mActivity,"Text you want to display",Toast.LENGTH_SHORT).show();

이것은 나를 위해 작동합니다.


독특한 접근 방식

(Dialog, Fragment, Even Util 클래스 등에서 작동합니다.)

ApplicationContext.getInstance().toast("I am toast");

그에 따라 Application 클래스에 아래 코드를 추가하십시오.

public class ApplicationContext extends Application {

private static ApplicationContext instance;

@Override
public void onCreate() {
    super.onCreate();
    instance = this;
}

public static void toast(String message) {
    Toast.makeText(getContext(), message, Toast.LENGTH_SHORT).show();
}
}

        public void onClick(View v) {
            Context context = v.getContext();
            CharSequence text = "Message";
            int duration = Toast.LENGTH_SHORT;
            Toast toast = Toast.makeText(context, text, duration);
            toast.show();
        }

참조 URL : https://stackoverflow.com/questions/10770055/use-toast-inside-fragment

반응형