커스텀 토스트를 표시하려고하지만 애플리케이션 자체가 아닌 자동화 된 테스트에서 표시하려고합니다.Android 테스팅 : 계기판에서 사용자 토스트 유입 및 표시
레이아웃 인플레이션이 작동하지 않습니다. 보기를 확대하고 테스트 프로젝트에서 표시하고 표시 할 수 있습니까?
final Activity targetActivity = Solo.getCurrentActivity(); // Using Robotium to get current displayed Activity
LayoutInflater inflater = targetActivity.getLayoutInflater();
View layout = inflater.inflate(test.my.package.R.layout.my_custom_toast, null); // resource is located in test project
TextView text = (TextView) layout.findViewById(test.my.package.R.id.textToShow); // textview within the layout
text.setText("Hello from Instrumentation"); // here I get the NullPointerException
Toast toast = new Toast(targetActivity);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
솔루션
를 참조하지 않고 새로운 LayoutInflater
받기 :
final Activity targetActivity = Solo.getCurrentActivity(); // Using Robotium to get current displayed Activity
Toast.makeText(targetActivity, "Hello from Instrumentation", Toast.LENGTH_SHORT).show();
무엇을 작동하지 않습니다는 다음과 같다 : 작업을 수행 무엇
는 표준 토스트입니다 targetActivity
final Activity targetActivity = Solo.getCurrentActivity(); // Using Robotium to get current displayed Activity
// *** !!! ***
LayoutInflater inflater =
(LayoutInflater) getInstrumentation().getContext().getSystemService (Context.LAYOUT_INFLATER_SERVICE);
// getContext() , NOT getTargetContext()
View layout = inflater.inflate(test.my.package.R.layout.my_custom_toast, null); // resource is located in test project
TextView text = (TextView) layout.findViewById(test.my.package.R.id.textToShow); // textview within the layout
text.setText("Hello from Instrumentation"); // here I get the NullPointerException
Toast toast = new Toast(targetActivity);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
감사합니다. Inflater를 지금 다른 방법으로 얻지 만 이것도 잘 작동합니다. – IHeartAndroid