使用intent调用多个活动

时间:2016-12-19 17:43:25

标签: android android-layout android-intent

此代码未按预期工作。我创建了5个活动,我在activity1中使用按钮faq来实现activity2。在activity2中,我正在调用另外三个活动3,4和5,并且在运行应用程序时,它显示不幸停止。我认为我没有正确使用意图。

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);

    }}} 

xml for activity1

   <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;
            }
        }
    }

xml for activity2

<?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

1 个答案:

答案 0 :(得分:1)

正如我看来你的问题不是关于意图。您正确使用它的问题是您从Main2Activity设置Main2Activity的布局。

只需更改Main2Activity类中的代码

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

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

    ...your code
}

setContentView(Your Main2Activity Layout);