조각 내에서 토스트 사용
사용자가 조각 안의 버튼을 클릭 할 때 토스트 메시지를 표시하려고합니다. 문제는 토스트를 표시하기 위해 활동에 액세스 할 수 없다는 것입니다.
출처는 다음과 같습니다 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
'Nice programing' 카테고리의 다른 글
java.net.UnknownHostException :“호스트를 확인할 수 없습니다. (0) | 2020.12.31 |
---|---|
Swift를 사용하여 Xcode에서 배경 이미지를 설정하는 방법은 무엇입니까? (0) | 2020.12.31 |
java.lang.Void와 void의 차이점은 무엇입니까? (0) | 2020.12.31 |
Python : SWIG 대 ctypes (0) | 2020.12.31 |
WKWebView에서 확대 동작 비활성화 (0) | 2020.12.31 |