按钮单击会导致软键盘打开时崩溃



我对softKeyboard有很奇怪的问题

softKeyboard打开并且我单击buttontextView应用程序崩溃时,无论事件中是否有任何代码on click应用程序都会崩溃。

关闭softkeyboard时就没有这样的问题。

在与此完全相同的另一个活动中,没有这样的问题。

这是我点击时logcat

2018-09-30 17:56:37.989 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@dd08953[VerifyActivity]: ViewPostImeInputStage processPointer 0
2018-09-30 17:56:38.068 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@dd08953[VerifyActivity]: ViewPostImeInputStage processPointer 1
2018-09-30 17:56:38.099 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@dd08953[VerifyActivity]: MSG_WINDOW_FOCUS_CHANGED 0
2018-09-30 17:56:38.134 22151-22151/app.ufarm.ir.ufarm D/TextView: setTypeface with style : 0
2018-09-30 17:56:38.137 22151-22151/app.ufarm.ir.ufarm D/TextView: setTypeface with style : 0
2018-09-30 17:56:38.139 22151-22151/app.ufarm.ir.ufarm D/TextView: setTypeface with style : 0
2018-09-30 17:56:38.147 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@2541e5[LoginActivity]: ThreadedRenderer.create() translucent=true
2018-09-30 17:56:38.150 22151-22151/app.ufarm.ir.ufarm D/InputTransport: Input channel constructed: fd=62
2018-09-30 17:56:38.150 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@2541e5[LoginActivity]: setView = DecorView@60f04ba[LoginActivity] touchMode=true
2018-09-30 17:56:38.155 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@2541e5[LoginActivity]: dispatchAttachedToWindow
2018-09-30 17:56:38.172 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@2541e5[LoginActivity]: Relayout returned: oldFrame=[0,0][0,0] newFrame=[0,0][720,1280] result=0x27 surface={isValid=true -1028659200} surfaceGenerationChanged=true
2018-09-30 17:56:38.173 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@2541e5[LoginActivity]: mHardwareRenderer.initialize() mSurface={isValid=true -1028659200} hwInitialized=true
2018-09-30 17:56:38.173 22151-22261/app.ufarm.ir.ufarm D/mali_winsys: EGLint new_window_surface(egl_winsys_display*, void*, EGLSurface, EGLConfig, egl_winsys_surface**, egl_color_buffer_format*, EGLBoolean) returns 0x3000,  [720x1280]-format:1
2018-09-30 17:56:38.191 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@2541e5[LoginActivity]: MSG_RESIZED_REPORT: frame=Rect(0, 0 - 720, 1280) ci=Rect(0, 48 - 0, 0) vi=Rect(0, 48 - 0, 0) or=1
2018-09-30 17:56:38.191 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@2541e5[LoginActivity]: MSG_WINDOW_FOCUS_CHANGED 1
2018-09-30 17:56:38.192 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@2541e5[LoginActivity]: mHardwareRenderer.initializeIfNeeded()#2 mSurface={isValid=true -1028659200}
2018-09-30 17:56:38.192 22151-22151/app.ufarm.ir.ufarm V/InputMethodManager: mNextServedView is change
2018-09-30 17:56:38.197 22151-22151/app.ufarm.ir.ufarm V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@cf84ae0 nm : app.ufarm.ir.ufarm ic=com.android.internal.widget.EditableInputConnection@5c85199
2018-09-30 17:56:38.198 22151-22151/app.ufarm.ir.ufarm I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
2018-09-30 17:56:38.201 22151-22151/app.ufarm.ir.ufarm D/InputTransport: Input channel constructed: fd=86
2018-09-30 17:56:38.201 22151-22151/app.ufarm.ir.ufarm D/InputTransport: Input channel destroyed: fd=94
2018-09-30 17:56:38.211 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@2541e5[LoginActivity]: MSG_RESIZED: frame=Rect(0, 0 - 720, 1280) ci=Rect(0, 48 - 0, 500) vi=Rect(0, 48 - 0, 500) or=1
2018-09-30 17:56:38.211 22151-22151/app.ufarm.ir.ufarm W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
2018-09-30 17:56:38.211 22151-22151/app.ufarm.ir.ufarm W/IInputConnectionWrapper: performPrivateCommand on inactive InputConnection
2018-09-30 17:56:38.211 22151-22151/app.ufarm.ir.ufarm W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
2018-09-30 17:56:38.222 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@dd08953[VerifyActivity]: mHardwareRenderer.destroy()#1
2018-09-30 17:56:38.228 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@dd08953[VerifyActivity]: Relayout returned: oldFrame=[0,0][720,1280] newFrame=[0,0][720,1280] result=0x5 surface={isValid=false 0} surfaceGenerationChanged=true
2018-09-30 17:56:38.237 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@2541e5[LoginActivity]: Relayout returned: oldFrame=[0,0][720,1280] newFrame=[0,0][720,1280] result=0x1 surface={isValid=true -1028659200} surfaceGenerationChanged=false
2018-09-30 17:56:38.241 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@1009443[HomeActivity]: MSG_RESIZED: frame=Rect(0, 0 - 720, 1280) ci=Rect(0, 48 - 0, 0) vi=Rect(0, 48 - 0, 0) or=1
2018-09-30 17:56:38.249 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@1009443[HomeActivity]: Relayout returned: oldFrame=[0,0][720,1280] newFrame=[0,0][720,1280] result=0x1 surface={isValid=true -982102016} surfaceGenerationChanged=false
2018-09-30 17:56:38.616 22151-22151/app.ufarm.ir.ufarm D/TextView: SYANI: Clipboard API is calling: clearFilter()
2018-09-30 17:56:38.616 22151-22151/app.ufarm.ir.ufarm D/TextView: SYANI: Clipboard API is calling: unregisterClipboardEventListener()
2018-09-30 17:56:38.619 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@dd08953[VerifyActivity]: mHardwareRenderer.destroy()#4
2018-09-30 17:56:38.619 22151-22151/app.ufarm.ir.ufarm D/ViewRootImpl@dd08953[VerifyActivity]: dispatchDetachedFromWindow
2018-09-30 17:56:38.624 22151-22151/app.ufarm.ir.ufarm D/InputTransport: Input channel destroyed: fd=81

这是活动

public class VerifyActivity extends AppCompatActivity {
private String phone;
private String token;
private Timer T;
private int count = 0;
private TextView activity_verify_btn_confirm;
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_verify);
ButterKnife.bind(this);
try {
Intent intent = getIntent();
phone = intent.getStringExtra("phone");
} catch (Exception e) {
}
activity_verify_btn_confirm = (TextView) findViewById(R.id.activity_verify_btn_confirm);
activity_verify_btn_confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//   new getVerifyServiceAsync().execute(Urls.BASE_URL + Urls.VERIFY, phone, activity_verify_tv_code.getText().toString());
}
});
activity_verify_tv_resend.setVisibility(View.GONE);
secondCounter();
activity_verify_tv_code.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (charSequence.toString().length() < 5) {
activity_verify_btn_confirm.setEnabled(false);
} else {
InputMethodManager imm = (InputMethodManager) getApplicationContext().getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(activity_verify_tv_code.getWindowToken(), 0);
activity_verify_btn_confirm.setEnabled(true);
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
@BindView(R.id.loading_indicator)
FrameLayout loading_indicator;
@BindView(R.id.avi)
AVLoadingIndicatorView avi;
@BindView(R.id.activity_verify_tv_code)
EditText activity_verify_tv_code;
@BindView(R.id.activity_verify_tv_resend)
TextView activity_verify_tv_resend;
@BindView(R.id.activity_verify_tv_timer)
TextView activity_verify_tv_timer;
@OnClick(R.id.activity_verify_tv_resend)
void resend() {
new getLoginServiceAsync().execute(Urls.BASE_URL + Urls.LOGIN, phone);
secondCounter();
}
@OnClick(R.id.activity_verify_tv_change_phone)
void change_phone() {
Intent intent = new Intent(VerifyActivity.this, LoginActivity.class);
VerifyActivity.this.startActivity(intent);
finish();
}
private class getVerifyServiceAsync extends Webservice.verifyService {
@Override
protected void onPreExecute() {
loading_indicator.setVisibility(View.VISIBLE);
avi.show();
}
@Override
protected void onPostExecute(String result) {
loading_indicator.setVisibility(View.GONE);
String x = result;
try {
JSONObject jsonObject = new JSONObject(result);
Boolean state = jsonObject.getBoolean("status");

if (state) {
// code was correct
/* JSONObject extra = jsonObject.getJSONObject("extra");
boolean registered = extra.getBoolean("registered");*/
JSONObject data = jsonObject.getJSONObject("data");
boolean registered = data.getBoolean("is_register");
if (registered) {
/*JSONObject data = jsonObject.getJSONObject("data");*/
JSONObject extra = jsonObject.getJSONObject("extra");
JSONObject user = extra.getJSONObject("user");
int id = user.getInt("id");
String name = user.getString("name");
String email = user.getString("email");
String national_number = user.getString("national_number");
String mobile = user.getString("mobile");
JSONArray wallets = user.getJSONArray("wallets");
JSONObject wallet = wallets.getJSONObject(0);
int walletID = wallet.getInt("id");
G.WALLET_ID.edit().putInt("WALLET_ID", walletID).apply();
int is_active = wallet.getInt("is_active");
if (is_active == 0) {
G.HAS_WALLET.edit().putBoolean("HAS_WALLET", false).apply();
} else {
G.HAS_WALLET.edit().putBoolean("HAS_WALLET", true).apply();
}

String photo = "0";
try {
photo = user.getString("photo");
} catch (Exception e) {
}
JSONArray address = user.getJSONArray("addresses");
JSONArray userActivity = user.getJSONArray("user_activities");

G.IS_REGISTERED.edit().putBoolean("IS_REGISTERED", true).apply();
G.CUSTOMER_ID.edit().putString("CUSTOMER_ID", String.valueOf(id)).apply();
G.CUSTOMER_NAME.edit().putString("CUSTOMER_NAME", name).apply();
G.CUSTOMER_EMAIL.edit().putString("CUSTOMER_EMAIL", email).apply();
G.CUSTOMER_NATIONAL_NUMBER.edit().putString("CUSTOMER_NATIONAL_NUMBER", national_number).apply();
G.CUSTOMER_PHONE.edit().putString("CUSTOMER_PHONE", mobile).apply();
G.CUSTOMER_PHOTO.edit().putString("CUSTOMER_PHOTO", photo).apply();
G.CUSTOMER_ADDRESS.edit().putString("CUSTOMER_ADDRESS", String.valueOf(address)).apply();
G.CUSTOMER_ACTIVITY.edit().putString("CUSTOMER_ACTIVITY", String.valueOf(userActivity)).apply();
G.IS_REGISTERED.edit().putBoolean("IS_REGISTERED", true).apply();
JSONObject extra1 = jsonObject.getJSONObject("extra");
try {
token = "Bearer " + extra1.getString("token");
G.TOKEN.edit().putString("TOKEN", token).apply();
} catch (Exception e) {
}

try {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(activity_verify_tv_code.getWindowToken(), 0);
} catch (Exception e) {
}
finish();

} else {
Intent intent = new Intent(VerifyActivity.this, RegisterActivity.class);
intent.putExtra("phone", phone);
VerifyActivity.this.startActivity(intent);
finish();
}

} else {
// code was inCorrect
Toast.makeText(VerifyActivity.this, "کد وارد شده اشتباه است", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}

}
}
private void secondCounter() {
T = new Timer();
T.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (count < 60) {
activity_verify_tv_resend.setVisibility(View.GONE);
activity_verify_tv_timer.setVisibility(View.VISIBLE);
activity_verify_tv_timer.setText(" ارسال مجدد پس از " + (60 - count) + " ثانیه ");
count++;
} else {
T.cancel();
count = 0;
activity_verify_tv_resend.setVisibility(View.VISIBLE);
activity_verify_tv_timer.setVisibility(View.GONE);
}
}
});
}
}, 1000, 1000);
}
private class getLoginServiceAsync extends Webservice.loginService {
@Override
protected void onPreExecute() {
}
@Override
protected void onPostExecute(String result) {
try {
JSONObject jsonObject = new JSONObject(result);
Boolean state = jsonObject.getBoolean("status");
if (state) {
Toast.makeText(VerifyActivity.this, "کد ارسال شد", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(VerifyActivity.this, "کد ارسال نشد", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}

}

知道吗??

更新-----------------------------------------------------

清单定义代码

验证是否存在问题的活动

登录是相同的活动,没有问题

<activity
android:name=".Activity.LoginActivity"
android:theme="@style/Theme.Intro"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".Activity.VerifyActivity"
android:theme="@style/Theme.Intro"
android:windowSoftInputMode="stateHidden|adjustResize" />

** 可能不会崩溃,但活动会自动完成,并且会出现以前的活动

** 此问题在某些设备上不存在

我发现了这个问题。 那是因为另一个button带来了前一个activity。 当keyboard打开时adjust pan导致button低于主button,并且由于与主按钮的颜色完全相同,我没有注意到这一点。 更改xml解决了问题

最新更新