Мое приложение отлично работает на эмуляторе, но вылетает на устройстве?
Уровень моего устройства Api - 18
Приложение создается без ошибок, и оно нормально работает на эмуляторе, но когда я собираю apk или если я запускаю приложение непосредственно на устройстве, используя режим отладки usb, приложение устанавливается, и когда я его открываю, оно показывает "Приложение, к сожалению, остановился "даже в синих стеках, я сталкиваюсь с той же проблемой. Пожалуйста, помогите мне с этим
Файл манифеста
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.haptechinnovations.caffeine.caffeinecoders">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-sdk android:minSdkVersion="17"
android:targetSdkVersion="26"
android:maxSdkVersion="27"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".youtube" />
<activity android:name=".facebook"></activity>
</application>
</manifest>
Файл Build Gradle (модуль: приложение)
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.haptechinnovations.caffeine.caffeinecoders"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:design:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
Трассировки стека
в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) в dalvik.system.NativeStart.main(собственный метод) Причина: android.view.InflateException: строка двоичного файла XML № 0: ошибка надувания класса android.support.design.widget.NavigationView на android.view.LayoutInflater.createView(LayoutInflater.java:620) на android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) на android.view.LayoutInflater.Infter.r. Java:755) на android.view.LayoutInflater.inflate(LayoutInflater.java:492) на android.view.LayoutInflater.inflate(LayoutInflater.java:397) на android.view.LayoutInflater.inflate(LayoutInflater.java:353) на android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) в android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) в com.haco MainActivity.java:53) на android.app.Activity.performCreate(Activity.java:5264) на android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302) в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) в android.app.ActivityThread.access$800 ActivityThread.java:151) в android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) в android.os.Handler.dispatchMessage(Handler.java:110) в android.os.Looper.loop(Looper.java:193) в android.app.ActivityThread.main(ActivityThread.java:5292) в java.lang.reflect.Method.invokeNative(собственный метод) в java.lang.reflect.Method.invoke(Method.java:515) в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) в dalvik.system.NativeStart.main(собственный метод) Вызывается: java.lang.reflect.InvocationTargetException в java.lang.reflect.Constructor.constructNative(собственный метод) в java.lang.reflect.Constructor.newInstance(Constructor.java:423) в android.view.LayoutInflater.createView(LayoutInflater.java:594) в android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) в android.view.LayoutInflater.rInflate(LayoutInflater.java:5) view.LayoutInflater.inflate (LayoutInflater.java:492) в android.view.LayoutInflater.inflate(LayoutInflater.java:397) в android.view.LayoutInflater.inflate(LayoutInflater.java:353) в android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) в android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) в com.haptechinnovations.caffeine.CajainAacAcoders android.app.Activity.performCreate(Activity.java:5264) в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1088) в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302) в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) в android.app.ActivityThread.access$800(ActivityThread.java:151) на android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) на android.os.Handler.dispatchMessage(Handler.java:110) на android.os.Looper. цикл (Looper.java:193) в android.app.ActivityThread.main(ActivityThread.java:5292) в java.lang.reflect.Method.invokeNative(собственный метод) в java.lang.reflect.Method.invoke (метод. Java: 515) в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) в dalvik.system.NativeStart.main(собственный метод) Вызывается: android.content.res.Resources$NotFoundException: идентификатор ресурса #0x7f07007d в android.content.res.Resources.getValue(Resources.java:1133) в android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:330) в android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:195) в android.support.v7.widget.Dragompat wable(AppCompatDrawableManager.java:188) на android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100) на android.support.v7.view.menu.MenuItemImpl.getIcon(MenuItemImp1). в android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.prepareMenuItems(NavigationMenuPresenter.java:519) в android.support.design.internal.NavigationMenuPresenter $ NavigationMenu.apj.injup.su.NavigationMenuPresenter.updateMenuView(NavigationMenuPresenter.java:117) в android.support.design.widget.NavigationView.inflateMenu(NavigationView.java:250) в android.support.design.widget.NavigationView.: Навигация)..support.design.widget.NavigationView. (NavigationView.java:98)
Main Activity.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" >
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
Основная деятельность
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
private WebView mywebView;
String url = "https://www.youtube.com/caffeinecoders";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mywebView=(WebView) findViewById(R.id.webview);
WebSettings webSettings=mywebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mywebView.loadUrl("https://caffeincoder.wordpress.com/");
mywebView.setWebViewClient(new WebViewClient());
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
if (mywebView.canGoBack()) {
mywebView.goBack();
} else {
super.onBackPressed();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_open) {
boolean isAppExists;
isAppExists = isInstalled ("com.google.android.youtube");
if(isAppExists==true) {
Intent i = new Intent("android.intent.action.VIEW", Uri.parse(url));
startActivity(i);
}
else {
Toast.makeText(this, "YouTube App Not Installed", Toast.LENGTH_SHORT).show();
}
return true;
}
return super.onOptionsItemSelected(item);
}
private boolean isInstalled(String uri) {
PackageManager pm = getPackageManager();
boolean isIn;
try{
pm.getPackageInfo(uri,PackageManager.GET_ACTIVITIES);
isIn=true;
}catch(PackageManager.NameNotFoundException e){
isIn=false;
}
return isIn;
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_youtube) {
Intent intent=new Intent(MainActivity.this,youtube.class);
startActivity(intent);
// Handle the camera action
} else if (id == R.id.nav_facebook) {
Intent intent=new Intent(MainActivity.this,facebook.class);
startActivity(intent);
} else if (id == R.id.nav_about) {
} else if (id == R.id.nav_share) {
} else if (id == R.id.nav_send) {
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
2 ответа
Может быть проблема пользовательского интерфейса. В качестве примера вы разработали приложение для мобильных устройств и планшетов. Если вы пропустили некоторые коды в мобильном интерфейсе (файл XML), он не будет работать на мобильном телефоне. Но это будет хорошо работать в планшете. Пожалуйста, пройдите.
android.content.res.Resources$NotFoundException: идентификатор ресурса #0x7f07007d
Это твоя проблема. Откройте файл R, чтобы увидеть, какой ресурс создает проблему.
В другой раз возникает проблема, если вы пытаетесь вызвать набор текста при разборе int, который заставляет android искать ресурс, который вместо этого сопоставляется с целочисленным значением.
Размещение кода активности, в которой происходит сбой, может помочь