[英]Android app seems to be crashing on launch on KitKat 4.4
當我的應用程序安裝在運行Oreo 8.0的相對較新的華為上時,我的應用程序可以順利啟動和運行。 該應用程序還可以在運行Lollipop的Nexus模擬器上正常運行。 但是,在運行KitKat 4.4的另一部手機上,該應用在啟動時崩潰。
我認為在添加默認的NavigationDrawerActivity時出現了問題。
09-05 14:05:57.285 30968-30968 /? E / AndroidRuntime:致命例外:主進程:com.example.a_phi.myapplication,PID:30968 java.lang.RuntimeException:無法啟動活動ComponentInfo {com.example.a_phi.myapplication / com.example.a_phi.myapplication.LoginActivity }:android.view.InflateException:二進制XML文件第2行:在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2264)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2313)處膨脹類時出錯android.os.Handler.dispatchMessage(Handler.java:102)上的.app.ActivityThread.access $ 1100(ActivityThread.java:141)在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1238)在android.os .Looper.loop(Looper.java:136)在android.app.ActivityThread.main(ActivityThread.java:5333)在java.lang.reflect.Method.invokeNative(本機方法)在java.lang.reflect.Method.invoke (Method.java:515)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:895)在com.android.internal.os.ZygoteInit dalvik.system.NativeStart.main(本機方法)的.main(ZygoteInit.java:711)原因:android.view.InflateException:二進制XML文件第2行:android.view.LayoutInflater.createView(LayoutInflater)發生類錯誤膨脹com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)的android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)的.java:620)android.view.LayoutInflater.createViewFromTag( android.view.LayoutInflater.inflate(LayoutInflater.java:469)處的LayoutInflater.java:694)android.view.LayoutInflater.inflate(LayoutInflater.java:353)處android.view.LayoutInflater.inflate(LayoutInflater.java:397)處)com.example.a_phi.myapplication.LoginActivity.onCreate()com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)android.app.Activity.setContentView(Activity.java:1958) android.app.Activity.performCreate(Activity.java:5340)上的LoginActivity.java:44)android.app.Instrumentation.callActivityOnCreate( 在Instrumentation.java:1087)在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2228)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2313)在android.app.ActivityThread.access $ 1100(ActivityThread.java: 141)位於android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1238)位於android.os.Handler.dispatchMessage(Handler.java:102)位於android.os.Looper.loop(Looper.java:136) com.android的java.lang.reflect.Method.invokeNative(本機方法)處的android.app.ActivityThread.main(ActivityThread.java:5333)。 dalvik.system.NativeStart.main(本機方法)處com.android.internal.os.ZygoteInit.main(ZygoteInit.java:711)處的internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:895) android.view.La處java.lang.reflect.Constructor.constructNative(本地方法)處的java.lang.reflect.InvocationTargetException。android.view.La處java.lang.reflect.Constructor.newInstance(Constructor.java:423)處的java.lang.reflect.InvocationTargetException com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)的com.android.internal.policy.iphone.android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)的youtInflater.createView(LayoutInflater.java:594) android.view.LayoutInflater.inflate(LayoutInflater.java:469)的.LayoutInflater.createViewFromTag(LayoutInflater.java:694)android.view.LayoutInflater.inflate(.android.view.LayoutInflater.inflate(LayoutInflater.java:397) com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)位於android.app.Activity.setContentView(Activity.java:1958)位於com.example.a_phi.myapplication的LayoutInflater.java:353)在android.app.Activity.performCreate(Activity.java:5340)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)的.LoginActivity.onCreate(LoginActivity.java:44)在android.app.ActivityThread.performLaunchActivity( android.app.ActivityThread.handleLaunchActivity(ActivityThread.ActivityThread.java:2228)。 的android.app.ActivityThread.access $ 1100(ActivityThread.java:141)的java:2313)android.os.Handler.dispatchMessage(Handler.java:android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1238)的android。 102),位於java.lang.reflect.Method.invokeNative(Native Method),位於android.app.ActivityThread.main(ActivityThread.java:5333),位於android.os.Looper.loop(Looper.java:136) com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:895)的com.android.internal.os.ZygoteInit.main(ZygoteInit.java)的.reflect.Method.invoke(Method.java:515) :711)在dalvik.system.NativeStart.main(本機方法)造成原因:com.huawei.android.content.res.ResourcesEx.getThemeDrawable(ResourcesEx.java:655)處的com.huawei.android.java.lang.NullPointerException .content.res.ResourcesEx.loadDrawable(ResourcesEx.java:623)在android.content.res.TypedArray.getDrawable(TypedArray.java:616)在android.view.View。(View.java:3573)在android.view .ViewGroup。(ViewGroup.java:470)在android.widg et.LinearLayout。(LinearLayout.java:179)at android.widget.LinearLayout。(LinearLayout.java:175)at java.lang.reflect.Constructor.constructNative(Native Method)at java.lang.reflect.Constructor.newInstance( com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)處android.view.LayoutInflater.createView(LayoutInflater.java:594)的Constructor.java.android.view.LayoutInflater.onCreateView (LayoutInflater.java:669)在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)在android.view.LayoutInflater.inflate(LayoutInflater.java:469)在android.view.LayoutInflater.inflate(LayoutInflater.java: 397)在android.view.LayoutInflater.inflate(LayoutInflater.java:353)在com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)在android.app.Activity.setContentView(Activity.java :1958),位於com.example.a_phi.myapplication.LoginActivity.onCreate(LoginActivity.java:44),位於android.app.Activity.performCreate (Activity.java:5340)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2228)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2313),位於android.app.ActivityThread.access $ 1100(ActivityThread.java:141),位於android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1238),位於android.os.Handler.dispatchMessage(Handler.java:102)在android.app.ActivityThread.main(ActivityThread.java:5333)在android.os.Looper.loop(Looper.java:136)在java.lang.reflect在java.lang.reflect.Method.invokeNative(Native Method) .com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:895)處的com.android.internal.os.ZygoteInit.main(ZygoteInit.java:711).Method.invoke(Method.java:515) )在dalvik.system.NativeStart.main(本機方法)
登錄活動
public class LoginActivity extends Activity {
private UserLoginTask mAuthTask = null;
// UI references.
private EditText mEmailView;
private EditText mPasswordView;
private TextView mRegistrationScreen;
private View mProgressView;
private View mLoginFormView;
public String id;
@Override
@TargetApi(19)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
setContentView(R.layout.activity_login_registration);
// Set up the login form.
mEmailView = (EditText) findViewById(R.id.email);
mPasswordView = (EditText) findViewById(R.id.password);
Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button);
mLoginFormView = findViewById(R.id.login_form);
mProgressView = findViewById(R.id.login_progress);
mRegistrationScreen = findViewById(R.id.registerLink);
mEmailSignInButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String emailAddress = mEmailView.getText().toString().trim();
String password = mPasswordView.getText().toString().trim();
UserLoginTask callDOIB = new UserLoginTask();
try {
String loginSuccessFail = callDOIB.execute(emailAddress, password).get();
try {
JSONObject jsonObject = new JSONObject(loginSuccessFail);
id = jsonObject.getString("id");
//JSONObject id = jArray.getJSONObject(0);
System.out.println("json object at LoginActivity id is "+id);
authoriseLogin(loginSuccessFail, id);
}catch (JSONException e){
e.printStackTrace();
}
}catch(InterruptedException e){
e.printStackTrace();
}
catch (ExecutionException e){
e.printStackTrace();
}
}
});
mRegistrationScreen.setOnClickListener(new OnClickListener(){
public void onClick(View v){
Intent loadRegistration = new Intent(LoginActivity.this, RegisterActivity.class);
startActivity(loadRegistration);
}
});
}
public void authoriseLogin(String authorise, String id){
if (authorise.contains("id")) {
System.out.println(" accessLRA.authoriseLogin login has been called");
Session session = new Session(getApplicationContext());
session.setId(id);
Intent loadPersonal = new Intent(LoginActivity.this, MainActivity.class);
startActivity(loadPersonal);
System.out.println("Login has been authorised");
}
else{
System.out.println("Incorrect username or password");
}
}
}
使用setContentView()
加載布局文件時,它給了我一個膨脹異常
java.lang.RuntimeException:無法啟動活動ComponentInfo {com.example.a_phi.myapplication / com.example.a_phi.myapplication.LoginActivity}:android.view.InflateException:二進制XML文件第2行:錯誤誇大類
如評論部分所建議,我實際上缺少一些其他的-v21文件夾,這些文件夾支持Android KitKat的API級別21。 由於某種原因,我沒有將它們移到我的新項目中。 現在正在工作,謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.