gpt4 book ai didi

java.lang.RuntimeException,由: android. view.InflateException引起

转载 作者:行者123 更新时间:2023-12-01 06:04:07 25 4
gpt4 key购买 nike

我在我的应用程序中收到以下错误代码,主要是 Android 版本 4.4 i我无法找到错误

您好,我正在尝试构建电池警报应用程序,但我不断收到 java.lang.RuntimeException 错误。我读过 stackoverflow 上的一些主题,他们的问题似乎是 AndroidManifest.xml 出了问题。我根本没有编辑该文件,但仍然收到此错误。代码如下:

java.lang.RuntimeException: 
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2328)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2386)
at android.app.ActivityThread.access$900 (ActivityThread.java:169)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1277)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:136)
at android.app.ActivityThread.main (ActivityThread.java:5476)
at java.lang.reflect.Method.invokeNative (Native Method)
at java.lang.reflect.Method.invoke (Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1099)
at dalvik.system.NativeStart.main (Native Method)
Caused by: android.view.InflateException:
at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:719)
at android.view.LayoutInflater.rInflate (LayoutInflater.java:761)
at android.view.LayoutInflater.rInflate (LayoutInflater.java:769)
at android.view.LayoutInflater.rInflate (LayoutInflater.java:769)
at android.view.LayoutInflater.rInflate (LayoutInflater.java:769)
at android.view.LayoutInflater.rInflate (LayoutInflater.java:769)
at android.view.LayoutInflater.inflate (LayoutInflater.java:498)
at android.view.LayoutInflater.inflate (LayoutInflater.java:398)
at android.view.LayoutInflater.inflate (LayoutInflater.java:354)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView (AppCompatDelegateImplV9.java:288)
at android.support.v7.app.AppCompatActivity.setContentView (AppCompatActivity.java:140)
at www.androidghost.com.batteryalarm.MainActivity.onCreate (MainActivity.java:232)
at android.app.Activity.performCreate (Activity.java:5451)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1093)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2292)
Caused by: android.content.res.Resources$NotFoundException:
at android.content.res.Resources.loadDrawable (Resources.java:3063)
at android.content.res.TypedArray.getDrawable (TypedArray.java:602)
at android.view.View.<init> (View.java:3687)
at android.widget.TextView.<init> (TextView.java:913)
at android.widget.Button.<init> (Button.java:108)
at android.support.v7.widget.AppCompatButton.<init> (AppCompatButton.java:66)
at android.support.v7.widget.AppCompatButton.<init> (AppCompatButton.java:62)
at android.support.v7.app.AppCompatViewInflater.createView (AppCompatViewInflater.java:109)
at android.support.v7.app.AppCompatDelegateImplV9.createView (AppCompatDelegateImplV9.java:1021)
at android.support.v7.app.AppCompatDelegateImplV9.onCreateView (AppCompatDelegateImplV9.java:1080)
at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView (LayoutInflaterCompatHC.java:47)
at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:690)
Caused by: org.xmlpull.v1.XmlPullParserException:
at android.graphics.drawable.Drawable.createFromXmlInner (Drawable.java:986)
at android.graphics.drawable.Drawable.createFromXml (Drawable.java:930)
at android.content.res.Resources.loadDrawable (Resources.java:3059)

这是我的 MainActivit 代码

 public class MainActivity extends AppCompatActivity
{

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

linearLayout= (LinearLayout) findViewById(R.id.relative_main);
btnTechnology = (Button) findViewById(R.id.btnTechnology);
btnHealth = (Button) findViewById(R.id.btnHealth);
btnStop=(Button) findViewById(R.id.btnStop);
btnPower = (Button) findViewById(R.id.btnPower);
btnTemp = (Button) findViewById(R.id.btntemp);
btnVoltage = (Button) findViewById(R.id.btnVoltage);
btnFab= (FloatingActionButton) findViewById(R.id.btnfab);
layoutButton= (LinearLayout) findViewById(R.id.layoutButton);
layoutContent= (RelativeLayout) findViewById(R.id.layoutContent);
btnCapacity= (Button) findViewById(R.id.btnCapacity);
toolbar = (Toolbar) findViewById(R.id.toolbar_id);

setSupportActionBar(toolbar);
try
{
actionBar=getSupportActionBar();
actionBar.setHomeAsUpIndicator(R.mipmap.home);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
}
catch (NullPointerException e)
{
e.printStackTrace();
}


mWaveLoadingView = (WaveLoadingView) findViewById(R.id.waveLoadingView);
mWaveLoadingView.setShapeType(WaveLoadingView.ShapeType.CIRCLE);
mWaveLoadingView.setCenterTitleColor(Color.BLACK);
mWaveLoadingView.setBottomTitleSize(20);
mWaveLoadingView.setBorderWidth(4);
mWaveLoadingView.setAmplitudeRatio(60);
mWaveLoadingView.setAnimDuration(3000);
mWaveLoadingView.pauseAnimation();
mWaveLoadingView.resumeAnimation();
mWaveLoadingView.cancelAnimation();
mWaveLoadingView.startAnimation();


try
{
btnStop.setText("Stop Alarm");
btnStop.setTextColor(Color.parseColor("#FFAF22DA"));
Toast.makeText(this, "Alarm Activated", Toast.LENGTH_SHORT).show();

startService(new Intent(this, RegisterAlarmService.class));
}
catch (Exception e)
{
e.printStackTrace();
}


//fetch value from firebase to use check for update
try
{
// 1 Create the singleton Remote Config object
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();

// To fetch parameter values from the Remote Config Server
long cacheExpiration=0;
mFirebaseRemoteConfig.fetch(cacheExpiration)
.addOnCompleteListener(this, new OnCompleteListener<Void>()
{
@Override
public void onComplete(@NonNull Task<Void> task)
{
if (task.isSuccessful())
{
// Once the config is successfully fetched it must be activated before newly fetched
// values are returned.
mFirebaseRemoteConfig.activateFetched();
}
displayDialogMessage();
}
});

}
catch (Exception e)
{
e.printStackTrace();
}


try
{
//wheather to show AutoStart dialog or not
mSharedPreferencesPermission=getSharedPreferences("permission",Context.MODE_PRIVATE);
Cancel_value= mSharedPreferencesPermission.getString("autostart","Def_value");

if(Cancel_value.equals("Def_value"))
{
if(Build.BRAND.equalsIgnoreCase("xiaomi") || Build.BRAND.equalsIgnoreCase("Letv") || Build.BRAND.equalsIgnoreCase("Honor")|| Build.BRAND.equalsIgnoreCase("oppo") || Build.BRAND.equalsIgnoreCase("vivo"))
{
mAutoPermissionDialog.show(getFragmentManager(),"My Permission");

}
}

}
catch (Exception e)
{
e.printStackTrace();
}


mSpringMenu = new SpringMenu(this, R.layout.view_menu);
mSpringMenu.setFadeEnable(true);
mSpringMenu.setChildSpringConfig(SpringConfig.fromOrigamiTensionAndFriction(20, 5));
mSpringMenu.setDragOffset(0.10f);
mSpringMenu.setDirection(0); //0 For Left and 1 For Right

mListView= (ListView) findViewById(R.id.nev_listView);
MyAdapter adapter=new MyAdapter(this,title,image);
mListView.setAdapter(adapter);
ListItemListener listener=new ListItemListener(this,getSupportFragmentManager());
mListView.setOnItemClickListener(listener);


try
{
//get the value of checkbox to check the rate dialog will show in future or not

SharedPreferences Ratepreferences=getSharedPreferences("Rates", Context.MODE_PRIVATE);
boolean check= Ratepreferences.getBoolean("Rate",false); //default value is false means show dialog

SimpleDateFormat dateFormat = new SimpleDateFormat("dd"); //get the system curent date
String compareDate = "15"; //assign the date at which dialog will appear

Date date = new Date();
String getDate = dateFormat.format(date); //convert the system date to string

if(!check) //check wheather the checkbox is selected or not
{
if (getDate.equals(compareDate)) //compare the date
{
RateMeDialog rateMeDialog=new RateMeDialog(); //if all condition meats then show dialog
rateMeDialog.show(getFragmentManager(),"My Rate");
}
}
}
catch (Exception e)
{
e.printStackTrace();
}

}

@Override
protected void onResume()
{
mRewardedVideoAd.resume(this);
registerReceiver(myBroadCast, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

try
{
mSharedPreferencesTheft_Value=getSharedPreferences("theft_value", Context.MODE_PRIVATE);
Theft_Set_Value=mSharedPreferencesTheft_Value.getString("thefts_value","Theft Alarm Off");

mSharedPreferencesTheft_Image=getSharedPreferences("theft_image",Context.MODE_PRIVATE);
Theft_Set_Image=mSharedPreferencesTheft_Image.getInt("thefts_image",R.mipmap.theft_off);

btnTheft= (Button) findViewById(R.id.btnTheft);

if (Theft_Set_Value.equals("Theft Alarm Off"))
{
btnTheft.setCompoundDrawablesWithIntrinsicBounds(0, R.mipmap.theft_off, 0, 0);
btnTheft.setText(Theft_Set_Value);
btnTheft.setTextColor(Color.parseColor("#9BA1A8"));
}
else
{
btnTheft.setCompoundDrawablesWithIntrinsicBounds(0,Theft_Set_Image, 0, 0);
btnTheft.setText(Theft_Set_Value);
btnTheft.setTextColor(Color.parseColor("#FFAF22DA"));
}

}
catch (Exception e)
{
e.printStackTrace();
}


super.onResume();

}

@Override
public void onPause()
{
mRewardedVideoAd.pause(this);
super.onPause();
}

@Override
protected void onDestroy()
{
mRewardedVideoAd.destroy(this);
unregisterReceiver(myBroadCast);
super.onDestroy();
}



@Override
public boolean dispatchTouchEvent(MotionEvent ev)
{

return mSpringMenu.dispatchTouchEvent(ev);

}



@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
{

if(item.getItemId()==R.id.navigate)
{
DialogInfo dialogInfo=new DialogInfo();
dialogInfo.show(getFragmentManager(), "My Info");
}
else if(item.getItemId()==android.R.id.home)
{
mSpringMenu.openMenu();
}
return super.onOptionsItemSelected(item);

}







private void displayDialogMessage()
{
String getVersionCode= mFirebaseRemoteConfig.getString("android_update_version_code");
try
{
FireBaseVersionCode=Integer.valueOf(getVersionCode);

}
catch (NumberFormatException e)
{
e.printStackTrace();
}


//Get PackageInfo like VersionCode
PackageManager packageManager=this.getPackageManager();

try
{

PackageInfo info=packageManager.getPackageInfo(this.getPackageName(),0);
VersionCode=info.versionCode;
}
catch (PackageManager.NameNotFoundException e)
{
e.printStackTrace();
}

if(VersionCode<FireBaseVersionCode)
{
mUpdateDialog.show(getSupportFragmentManager(),"My Update");
}


}





@Override
public void onBackPressed()
{
if(mBackPressed + time > System.currentTimeMillis())
{
super.onBackPressed();
return;
}
else
{
Snackbar snackbar=Snackbar.make(linearLayout,"Confirm Exit",Snackbar.LENGTH_LONG);
View view2=snackbar.getView();
view2.setBackgroundColor(Color.parseColor("#FFAF22DA"));
TextView textView= (TextView) view2.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextSize(20);
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
snackbar.show();
mBackPressed=System.currentTimeMillis();
}

}



public void Stop(View v)
{

if (btnStop.getText().toString().equals("Stop Alarm"))
{
btnStop.setText("Start Alarm");

Snackbar snackbar=Snackbar.make(linearLayout,"Alarm Deactivated",Snackbar.LENGTH_LONG);
View view2=snackbar.getView();
view2.setBackgroundColor(Color.parseColor("#FFAF22DA"));
TextView textView= (TextView) view2.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextSize(20);
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
snackbar.show();

btnStop.setCompoundDrawablesWithIntrinsicBounds(0, R.mipmap.alarm_start, 0, 0);
btnStop.setTextColor(Color.parseColor("#9BA1A8"));

stopService(new Intent(this, MyAlarmServiceClass.class));
stopService(new Intent(this, RegisterAlarmService.class));

}
else
{
//this else block will execute only when toggle button is off in setting now here we will on toggle button

btnStop.setText("Stop Alarm");

Snackbar snackbar=Snackbar.make(linearLayout,"Alarm Activated",Snackbar.LENGTH_LONG);
View view3=snackbar.getView();
view3.setBackgroundColor(Color.parseColor("#FFAF22DA"));
TextView textView= (TextView) view3.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextSize(20);
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
snackbar.show();

btnStop.setCompoundDrawablesWithIntrinsicBounds(0, R.mipmap.alarm_stop, 0, 0);
btnStop.setTextColor(Color.parseColor("#FFAF22DA"));


startService(new Intent(this, RegisterAlarmService.class));

}

}



public void ThetAlarmBtn(View view)
{

mSharedPreferencesTheft_Value=getSharedPreferences("theft_value", Context.MODE_PRIVATE);
SharedPreferences.Editor mEditor=mSharedPreferencesTheft_Value.edit();

mSharedPreferencesTheft_Image=getSharedPreferences("theft_image",Context.MODE_PRIVATE);
SharedPreferences.Editor editor_image=mSharedPreferencesTheft_Image.edit();



if (btnTheft.getText().toString().equals("Theft Alarm Off"))
{
if(status==BatteryManager.BATTERY_STATUS_CHARGING)
{
btnTheft.setText("Theft Alarm On");

Snackbar snackbar=Snackbar.make(linearLayout,"Theft Alarm On",Snackbar.LENGTH_LONG);
View view4=snackbar.getView();
view4.setBackgroundColor(Color.parseColor("#FFAF22DA"));
TextView textView= (TextView) view4.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextSize(20);
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
snackbar.show();

btnTheft.setCompoundDrawablesWithIntrinsicBounds(0, R.mipmap.theft_on, 0, 0);
btnTheft.setTextColor(Color.parseColor("#FFAF22DA"));


Theft_Get_Value = "Theft Alarm On";
mEditor.putString("thefts_value", Theft_Get_Value);
mEditor.apply();

Theft_Get_Image = R.mipmap.theft_on;
editor_image.putInt("thefts_image", Theft_Get_Image);
editor_image.apply();


startService(new Intent(this, RegisterTheftService.class));
}
else if(status==BatteryManager.BATTERY_STATUS_DISCHARGING)
{

Snackbar snackbar=Snackbar.make(linearLayout,"Please Connect Your Device To Charger To Activate Theft Alarm",Snackbar.LENGTH_LONG);
View view4=snackbar.getView();
view4.setBackgroundColor(Color.parseColor("#FFAF22DA"));
snackbar.show();
}
}

else
{
btnTheft.setText("Theft Alarm Off");

Snackbar snackbar=Snackbar.make(linearLayout,"Theft Alarm Off",Snackbar.LENGTH_LONG);
View view5=snackbar.getView();
view5.setBackgroundColor(Color.parseColor("#FFAF22DA"));
TextView textView= (TextView) view5.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextSize(20);
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
snackbar.show();

btnTheft.setCompoundDrawablesWithIntrinsicBounds(0, R.mipmap.theft_off, 0, 0);
btnTheft.setTextColor(Color.parseColor("#9BA1A8"));


Theft_Get_Value = "Theft Alarm Off";
mEditor.putString("thefts_value", Theft_Get_Value);
mEditor.apply();

Theft_Get_Image = R.mipmap.theft_off;
editor_image.putInt("thefts_image", Theft_Get_Image);
editor_image.apply();


stopService(new Intent(this, RegisterTheftService.class));
stopService(new Intent(this, MyTheftServiceClass.class));

}
}


public void OpenInfo(View v)
{
if(!isopen)
{
int x=layoutContent.getRight();
int y=layoutContent.getBottom();
int startRadius=0;
int endRadius= (int) Math.hypot(linearLayout.getWidth(),linearLayout.getHeight());
btnFab.setImageResource(R.mipmap.menu_close);

Animator animator= ViewAnimationUtils.createCircularReveal(layoutButton,x,y,startRadius,endRadius);
layoutButton.setVisibility(View.VISIBLE);
animator.start();

isopen=true;

}
else
{
int x=layoutContent.getRight();
int y=layoutContent.getBottom();
int startRadius=Math.max(linearLayout.getWidth(),linearLayout.getHeight());
int endRadius= 0;
btnFab.setImageResource(R.mipmap.menu_open);

Animator animator= ViewAnimationUtils.createCircularReveal(layoutButton,x,y,startRadius,endRadius);
layoutButton.setVisibility(View.VISIBLE);
animator.addListener(new Animator.AnimatorListener()
{
@Override
public void onAnimationStart(Animator animator) {

}

@Override
public void onAnimationEnd(Animator animator)
{
layoutButton.setVisibility(View.GONE);
}

@Override
public void onAnimationCancel(Animator animator) {

}

@Override
public void onAnimationRepeat(Animator animator) {

}
});
animator.start();
isopen=false;
}
}

}

这是我的 xml 代码

<include
android:id="@+id/toolbar_id"
layout="@layout/tool_bar">
</include>

<www.androidghost.com.batteryalarm.ArcLayout
android:id="@+id/arcLayout"
android:layout_weight="2.0"
android:layout_width="match_parent"
android:layout_height="0dp"
app:arc_cropDirection="cropOutside"
android:elevation="10dp"
app:arc_position="bottom"
app:arc_height="50dp">

<ImageView
android:background="@drawable/background"/>

<Button
android:drawableLeft="@drawable/temp2"
android:background="@drawable/ripple_effect/>

<Button
android:drawableLeft="@drawable/voltage"
android:background="@drawable/ripple_effect/>

<Button
android:drawableLeft="@drawable/capacity"
android:background="@drawable/ripple_effect"/>

<Button
android:background="@drawable/ripple_effect"/>
<Button
android:background="@drawable/ripple_effect/>

<Button
android:drawableLeft="@drawable/technology"
android:background="@drawable/ripple_effect"/>
</www.androidghost.com.batteryalarm.ArcLayout>

<Button
android:background="@drawable/dialog_ripple"/>

<android.support.design.widget.FloatingActionButton
android:src="@mipmap/menu_open"
</android.support.design.widget.FloatingActionButton>

<Button
android:drawableTop="@mipmap/alarm_stop"
android:background="@drawable/dialog_ripple"/>

最佳答案

如果您使用的是AppCompat 23.2.0,则需要设置这些标志。

如果您使用 Gradle 插件 v2.0 或更高版本,我们有一个方便的快捷方式来启用所有功能:

android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}

如果您尚未更新,并且使用的是 v1.5.0 或更低版本的 Gradle 插件,则需要将以下内容添加到应用的 build.gradle 中:

android {
defaultConfig {
// Stops the Gradle plugin’s automatic rasterization of vectors
generatedDensities = []
}

// Flag to tell aapt to keep the attribute ids around
aaptOptions {
additionalParameters "--no-version-vectors"
}
}

如果不启用此标志,当您在运行 KitKat 或更低版本的设备上运行应用时,您将看到此(或类似)错误。

## 或 ##

您还可以升级到23.4.0

dependencies {
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
}

您需要编写以下代码才能在使用 vector 的 Activity 顶部启用此功能:

static {
AppCompatDelegate.setCompatVectorFromSourcesEnabled(true);
}

在精彩文章 AppCompat — Age of the vectors 上查看有关此内容的更多详细信息

关于java.lang.RuntimeException,由: android. view.InflateException引起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49421483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com