[英]Android Edittext: Attempt to invoke interface method on a null object reference
當我運行下面的代碼時,永遠不會在edittext中找到用戶名。 我已經測試了是否使用用戶名,但是單擊該按鈕時,它將向事件偵聽器發送一個空對象。 我是android新手,感到困惑,為什么當用戶名edittext包含用戶名時它不返回字符串。
public class LoginFragment extends Fragment {
public static final String TAG = LoginFragment.class.getSimpleName();
public EditText username = null;
public View root = null;
public interface eventListener {
void someEvent(String s);
}
eventListener eventListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
root = inflater.inflate(R.layout.login_splashpage, null, false);
username = (EditText) root.findViewById(R.id.login_username);
Button login_button = (Button) root.findViewById(R.id.login_button);
login_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String usernameString = username.getText().toString();
Log.d(TAG, "Button Clicked" + usernameString);
if (!usernameString.isEmpty()) {
eventListener.someEvent(usernameString);
} else {
Snackbar.make(root, "No username provided. Try again", Snackbar.LENGTH_SHORT).show();
}
}
});
return root;
}
}
無論如何,謝謝您的幫助和時間
eventListener
為null,這就是為什么您得到NullPointerException的原因。
由於原始接口僅提供有關派生類應執行的操作的約定,因此您還必須創建其背后的邏輯:
private interface eventListener {
void onEvent(String string);
}
eventListener listener = new eventListener() {
@Override
public void onEvent(String string) {
Log.e(TAG, "onEvent " + string);
}
};
我不確定您是否想要在這里使用簡單的方法作為接口:
public void onLogin(String username) {
Log.e(TAG, "onLogin " + username)
}
我認為問題出在這條線上
eventListener.someEvent(usernameString);
在未初始化Interface eventListener的地方,您可以這樣做嗎?
eventListener ev = new eventListener(){
void someEvent(usernameString);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.