android - 使用 Intent 调用多个 Activity

标签 android android-layout android-intent

此代码未按预期工作。我已经创建了 5 个 Activity ,我正在使用 activity1 中的按钮 faq 来 Intent act​​ivity2。在 activity2 中,我调用了另外三个 Activity 3、4 和 5,并且在运行应用程序时它显示不幸停止。我认为我没有正确使用 Intent 。

activity1 的 java 代码

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button button = (Button)findViewById(R.id.faq);
            button.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            // do something when the button is clicked
            // Yes we will handle click here but which button clicked??? We don't know

            // So we will mak
            if(v.getId() == R.id.faq)
            {
                    // do something when the corky is clicked
                    Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                    startActivity(intent);

    }}} 

activity1 的 xml

   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:background="@drawable/educa"
    tools:context="com.example.android.educato.MainActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_alignParentBottom="true"
        android:textColor="#000000"
        android:id="@+id/faq"
        android:text="frequently asked questions (faq)"
        />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Never stop learning!"
        android:textColor="#DC143C"
        android:textAllCaps="true"
        android:textSize="56sp"
        android:textAlignment="center"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:id="@+id/textView" />
</RelativeLayout>

activity2的java代码

public class Main2Activity extends AppCompatActivity implements View.OnClickListener {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_main);


            // Capture our button from layout
            Button button = (Button)findViewById(R.id.b1);
            Button button2 = (Button)findViewById(R.id.b2);
            Button button3 = (Button)findViewById(R.id.b3);
            // Register the onClick listener with the implementation above
            button.setOnClickListener(this);
            button2.setOnClickListener(this);
            button3.setOnClickListener(this);

        }

        @Override
        public void onClick(View v) {
            // do something when the button is clicked
            // Yes we will handle click here but which button clicked??? We don't know

            // So we will make
            switch (v.getId() /*to get clicked view id**/) {
                case R.id.b1:

                    // do something when the corky is clicked
                    Intent intent = new Intent(Main2Activity.this,Main3Activity.class);
                    startActivity(intent);
                    break;
                case R.id.b2:

                    // do something when the corky2 is clicked
                    Intent intent1 = new Intent(Main2Activity.this,Main4Activity.class);
                    startActivity(intent1);
                    break;
                case R.id.b3:

                    // do something when the corky3 is clicked
                    Intent intent2 = new Intent(Main2Activity.this,Main5Activity.class);
                    startActivity(intent2);
                    break;
                default:
                    break;
            }
        }
    }

activity2 的 xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/educ"
    android:orientation="vertical"
    tools:context="com.example.android.educato.Main2Activity">

    <Button
        android:id="@+id/b1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:text="emergency contact numbers for resident of siliguri"

        />
<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/b2"
    android:gravity="center_horizontal"
    android:text="mode of admission for iits"
    android:layout_marginTop="24dp"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
/>

    <Button
        android:id="@+id/b3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="tourist attractions nearby siliguri"
        android:layout_marginTop="24dp"
      ``  android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"

        />
</LinearLayout>

logcat:点击应用中的按钮后

Process: com.example.android.educato, PID: 9131
   java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.educato/com.example.android.educato.Main2Activity}: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class <unknown>
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2493)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2576)
       at android.app.ActivityThread.access$1000(ActivityThread.java:155)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1421)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:148)
       at android.app.ActivityThread.main(ActivityThread.java:5539)
       at java.lang.reflect.Method.invoke(Native Method)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    Caused by: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class <unknown>
       at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
       at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
       at com.example.android.educato.Main2Activity.onCreate(Main2Activity.java:17)
       at android.app.Activity.performCreate(Activity.java:6289)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2446)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2576) 
       at android.app.ActivityThread.access$1000(ActivityThread.java:155) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1421) 
       at android.os.Handler.dispatchMessage(Handler.java:102) 
       at android.os.Looper.loop(Looper.java:148) 
       at android.app.ActivityThread.main(ActivityThread.java:5539) 
       at java.lang.reflect.Method.invoke(Native Method) 
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
    Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
       at android.view.LayoutInflater.createView(LayoutInflater.java:645)
       at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
       at android.view.LayoutInflater.onCreateView(LayoutInflater.java:694)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
       at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 
       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
       at com.example.android.educato.Main2Activity.onCreate(Main2Activity.java:17) 
       at android.app.Activity.performCreate(Activity.java:6289) 
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2446) 
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2576) 
       at android.app.ActivityThread.access$1000(ActivityThread.java:155) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1421) 
       at android.os.Handler.dispatchMessage(Handler.java:102) 
       at android.os.Looper.loop(Looper.java:148) 
       at android.app.ActivityThread.main(ActivityThread.java:5539) 
       at java.lang.reflect.Method.invoke(Native Method) 
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
    Caused by: java.lang.reflect.InvocationTargetException
       at java.lang.reflect.Constructor.newInstance(Native Method)
       at android.view.LayoutInflater.createView(LayoutInflater.java:619)
       at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58) 
       at android.view.LayoutInflater.onCreateView(LayoutInflater.java:694) 
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762) 
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
       at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 
       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
       at com.example.android.educato.Main2Activity.onCreate(Main2Activity.java:17) 
       at android.app.Activity.performCreate(Activity.java:6289) 
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2446) 
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2576) 
       at android.app.ActivityThread.access$1000(ActivityThread.java:155) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1421) 
       at android.os.Handler.dispatchMessage(Handler.java:102) 
       at android.os.Looper.loop(Looper.java:148) 
       at android.app.ActivityThread.main(ActivityThread.java:5539) 
       at java.lang.reflect.Method.invoke(Native Method) 
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
    Caused by: java.lang.OutOfMemoryError: Failed to allocate a 814390212 byte allocation with 14818058 free bytes and 170MB until OOM
       at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
       at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
       at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609)
       at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
       at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080)
       at android.content.res.Resources.loadDrawableForCookie(Resources.java:2650)
       at android.content.res.Resources.loadDrawable(Resources.java:2555)
       at android.content.res.TypedArray.getDrawable(TypedArray.java:870)
       at android.view.View.<init>(View.java:3964)
       at android.view.ViewGroup.<init>(ViewGroup.java:574)
       at android.widget.LinearLayout.<init>(LinearLayout.java:203)
       at android.widget.LinearLayout.<init>(LinearLayout.java:199)
       at android.widget.LinearLayout.<init>(LinearLayout.java:195)
       at java.lang.reflect.Constructor.newInstance(Native Method) 
       at android.view.LayoutInflater.createView(LayoutInflater.java:619) 
       at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58) 
       at android.view.LayoutInflater.onCreateView(LayoutInflater.java:694) 
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762) 
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
       at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 
       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
       at com.example.android.educato.Main2Activity.onCreate(Main2Activity.java:17) 
       at android.app.Activity.performCreate(Activity.java:6289) 
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2446) 
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2576) 
       at android.app.ActivityThread.access$1000(ActivityThread.java:155) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1421) 
       at android.os.Handler.dispatchMessage(Handler.java:102) 
       at android.os.Looper.loop(Looper.java:148) 
       at android.app.ActivityThread.main(ActivityThread.java:5539) 
       at java.lang.reflect.Method.invoke(Native Method) 
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
12-21 03:16:51.633 9131-9131/com.example.android.educato D/AppTracker: App Event: crash

最佳答案

据我所知,您的问题与 Intent 无关。您正确使用它,您的问题是您将 Main2Activity 的布局设置为与 MainActivity 相同。

只需更改 Main2Activity 类中的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main); //change this line

    ...your code
}

setContentView(Your Main2Activity Layout);

关于android - 使用 Intent 调用多个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41228189/

相关文章:

java - 当我尝试通过 Intent 发送字符串时出错

android - 如何在 onNewIntent() 中捕获新的 Intent?

android - 如何设置按钮的 state_pressed

android - 如何同步容器内动态水平 ScrollView 的 ScrollView 位置?

Android - 自动覆盖触摸/突出显示的图像按钮状态

android - 拉动缩放动画

android - 访问 Android 中的嵌套布局

android - 为什么我不能使用relativeLayout作为parentView?

android - 如何在不使用java的情况下在android上的TextView中制作可点击的url链接

android - 从另一个 Android 应用程序启动 Xamarin Android 应用程序