我有一个Android应用。该应用程序有十个活动,其中第一个活动是运行的启动屏幕,即一两秒钟后,该应用程序关闭并且没有进入第二个活动。我得到的错误是:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myapplication, PID: 4538
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.IntroPage}: java.lang.ClassCastException: androidx.appcompat.widget.LinearLayoutCompat cannot be cast to android.widget.LinearLayout
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: java.lang.ClassCastException: androidx.appcompat.widget.LinearLayoutCompat cannot be cast to android.widget.LinearLayout
at com.example.myapplication.IntroPage.onCreate(IntroPage.java:45)
at android.app.Activity.performCreate(Activity.java:6679)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
多数民众赞成在我的XML启动画面代码:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".SplashScreen"
android:background="@color/White">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/img_gif"
android:layout_width="match_parent"
android:layout_height="289dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="38dp"
android:src="@drawable/ic_profile"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.296" />
<androidx.core.widget.ContentLoadingProgressBar
android:id="@+id/progress"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginTop="4dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.005"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.github.ybq.android.spinkit.SpinKitView
android:id="@+id/spin_kit"
style="@style/SpinKitView.WanderingCubes"
android:layout_width="60dp"
android:layout_height="49dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="36dp"
android:layout_marginRight="8dp"
app:SpinKit_Color="@color/orange"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/img_gif"
app:layout_constraintVertical_bias="0.254" />
<TextView
android:id="@+id/textView2"
android:layout_width="135dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginTop="8dp"
android:layout_marginBottom="2dp"
android:gravity="center"
android:text="@string/powerd_by_maede"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spin_kit"
app:layout_constraintVertical_bias="0.48"
android:layout_marginLeft="8dp"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginRight="8dp"
app:layout_constraintRight_toRightOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
多数民众赞成我的sec活动的xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#9bfa5e">
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewpager"
android:layout_width="0dp"
android:layout_height="435dp"
tools:layout_constraintRight_creator="1"
tools:layout_constraintBottom_creator="1"
app:layout_constraintBottom_toTopOf="@+id/layoutDots"
app:layout_constraintRight_toRightOf="@+id/layoutDots"
tools:layout_constraintLeft_creator="1"
android:layout_marginBottom="8dp"
app:layout_constraintLeft_toRightOf="@+id/layoutDots" />
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/layoutDots"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
android:orientation="horizontal"
tools:layout_constraintBottom_creator="1"
app:layout_constraintBottom_toBottomOf="parent"
tools:layout_constraintLeft_creator="1"
app:layout_constraintLeft_toLeftOf="parent" />
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:alpha=".5"
android:background="#222"
tools:layout_constraintTop_creator="1"
tools:layout_constraintRight_creator="1"
tools:layout_constraintBottom_creator="1"
app:layout_constraintBottom_toTopOf="@+id/btn_next"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
app:layout_constraintRight_toRightOf="parent"
tools:layout_constraintLeft_creator="1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="@+id/btn_next" />
<Button
android:id="@+id/btn_next"
android:layout_width="88dp"
android:layout_height="50dp"
android:background="@drawable/chevron_right"
android:textColor="#222"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="1"
app:layout_constraintLeft_toRightOf="@+id/btn_skip"
app:layout_constraintRight_toRightOf="parent"
tools:layout_constraintBottom_creator="1"
tools:layout_constraintLeft_creator="1" />
<Button
android:id="@+id/btn_skip"
android:layout_width="88dp"
android:layout_height="48dp"
android:layout_marginBottom="1dp"
android:background="@null"
android:text="رد کردن"
android:textColor="#ffffff"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/layoutDots"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="1.0"
tools:layout_constraintBottom_creator="1"
tools:layout_constraintLeft_creator="1" />
</androidx.constraintlayout.widget.ConstraintLayout>
多数民众赞成在我的启动画面活动:
package com.example.myapplication;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import androidx.appcompat.app.AppCompatActivity;
import android.view.WindowManager;
import android.widget.ProgressBar;
import com.github.ybq.android.spinkit.sprite.Sprite;
import com.github.ybq.android.spinkit.style.DoubleBounce;
import java.util.Calendar;
public class SplashScreen extends AppCompatActivity {
SharedPreferences sharedP;
boolean show_intropage=true;
Calendar taqwim = Calendar.getInstance();
int today,date_mod;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_screen);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
//----progress---------------
ProgressBar progressBar = findViewById(R.id.progress);
Sprite doubleBounce = new DoubleBounce();
progressBar.setIndeterminateDrawable(doubleBounce);
today = taqwim.get(Calendar.DAY_OF_YEAR);
sharedP = getSharedPreferences(Items.SETTINGS, Context.MODE_PRIVATE);
show_intropage = sharedP.getBoolean(Items.INTROPAGE,true);
sharedP.edit().putInt(Items.TODAY, today).apply();
if (show_intropage){
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent Myintent = new Intent(SplashScreen.this,IntroPage.class);
startActivity(Myintent);
finish();
}
},4000);
date_mod = taqwim.get(Calendar.DAY_OF_YEAR);
// Toast.makeText(this, day+"", Toast.LENGTH_SHORT).show();
sharedP.edit().putInt(Items.DATE_MODIFIED, date_mod).apply();
}else {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent Myintent = new Intent(SplashScreen.this,MainActivity.class);
startActivity(Myintent);
finish();
}
},4000);
}
}
}
多数民众赞成在我的第二活动:
package com.example.myapplication;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import androidx.appcompat.app.AppCompatActivity;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.ToxicBakery.viewpager.transforms.RotateUpTransformer;
public class IntroPage extends AppCompatActivity {
ViewPager MyviewPager;
Button btnSkip, btnNext;
private LinearLayout dotsLayout;
private TextView[] dots;
SharedPreferences sharedP;
int [] layout = {R.layout.slide_01,R.layout.slide_02,R.layout.slide_04};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_intro_page);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
MyviewPager = (ViewPager) findViewById(R.id.viewpager);
btnSkip = (Button) findViewById(R.id.btn_skip);
btnNext = (Button) findViewById(R.id.btn_next);
dotsLayout = (LinearLayout) findViewById(R.id.layoutDots);
MyviewPager.setAdapter(new ViewP());
MyviewPager.setPageTransformer(true, new RotateUpTransformer());
sharedP = getSharedPreferences(Items.SETTINGS, Context.MODE_PRIVATE);
addBottomDots(0);
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int Tedad_items = MyviewPager.getCurrentItem()+1;
if (Tedad_items < layout.length) {
MyviewPager.setCurrentItem(MyviewPager.getCurrentItem()+1);
} else {
startActivity(new Intent(IntroPage.this,MainActivity.class));
finish();
}
}
});
btnSkip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(IntroPage.this,MainActivity.class));
finish();
}
});
MyviewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
addBottomDots(position);
if (position == layout.length - 1) {
// btnNext.setText("Start");
btnNext.setBackgroundResource(R.drawable.check);
btnSkip.setVisibility(View.GONE);
} else {
// btnNext.setText("Next");
btnNext.setBackgroundResource(R.drawable.chevron_right);
btnSkip.setVisibility(View.VISIBLE);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
public class ViewP extends PagerAdapter {
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view= LayoutInflater.from(IntroPage.this).inflate(layout[position],container,false);
container.addView(view);
return view;
}
@Override
public int getCount() {
return layout.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// View view = (View)object;
container.removeView((View) object);
}
}
private void addBottomDots(int currentPage) {
dots = new TextView[layout.length];
int[] colorsActive = getResources().getIntArray(R.array.array_dot_active);
int[] colorsInactive = getResources().getIntArray(R.array.array_dot_inactive);
dotsLayout.removeAllViews();
for (int i = 0; i < dots.length; i++) {
dots[i] = new TextView(this);
dots[i].setText(Html.fromHtml("•"));
dots[i].setTextSize(35);
dots[i].setTextColor(colorsInactive[0]);
dotsLayout.addView(dots[i]);
}
if (dots.length > 0)
dots[currentPage].setTextColor(colorsActive[0]);
}
}
最佳答案
问题在这里:
dotsLayout = (LinearLayout) findViewById(R.id.layoutDots);
在布局中,您使用的是LinearLayoutCompat
。
采用:
LinearLayoutCompat dotsLayout;
dotsLayout = findViewById(R.id.layoutDots);
关于javascript - androidx.appcompat.widget.LinearLayoutCompat无法转换为android.widget.LinearLayout,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61655216/