通过按钮更改活动并显示xml

时间:2018-01-11 12:56:14

标签: android xml android-activity

我是Android开发的新手,我正在尝试制作一个在其主要活动中有4个按钮的应用程序,当我点击其中一个按钮时,它将我带到另一个活动并显示其xml文件,应该是什么我写第二个活动?到目前为止,这是我的代码。

主xml文件

 <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/txt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="5dp"
        android:background="@color/colorAccent"
        android:text="Overview"
        android:textAppearance="@style/TextAppearance.AppCompat.Headline"
        android:textStyle="bold" />


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <Button
            android:id="@+id/one"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/background_light"
            android:text="Information" />
        <TableRow
            android:id="@+id/hr1"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#444">

        </TableRow>

        <Button
            android:id="@+id/two"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/background_light"
            android:text="Education" />
        <TableRow
            android:id="@+id/hr2"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#444">

        </TableRow>
        <Button
            android:id="@+id/three"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/background_light"
            android:text="Work Experience" />
        <TableRow
            android:id="@+id/hr3"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#444">

        </TableRow>
        <Button
            android:id="@+id/four"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/background_light"
            android:text="Education" />
        <TableRow
            android:id="@+id/hr4"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#444">

        </TableRow>


    </LinearLayout>

    </LinearLayout>

........................

 main activity
    package com.lakshay.display.piechart;


    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;

    public class MainActivity extends AppCompatActivity implements 
    View.OnClickListener {
    Button btn1 , btn2 ;


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

    }


     @Override
     public void onClick(View v) {
        Intent intent = new Intent();
        String nextAct = null ;
        String shield = "com.lakshay.display.piechart";
        Integer flag= -1;
        switch (v.getId())
        {
            case (R.id.one ):
            nextAct = shield + "ContactActicity";
            break;

            default:
                Toast.makeText(MainActivity.this , "Item Currently Unavailable" 
    , Toast.LENGTH_SHORT).show();

        }
        try {
            if (nextAct!=null)
            {
                intent = new Intent(MainActivity.this , Class.forName(nextAct));
                flag = Intent.FLAG_ACTIVITY_REORDER_TO_FRONT;
                if (flag  != -1 ){
                    intent.setFlags(flag);
                } startActivity(intent);
            }
        } catch (ClassNotFoundException e){
            e.printStackTrace();
        }
    }
    }

................... 第二个活动的 xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    android:background="@color/colorAccent"
    android:paddingLeft="15dp"
    android:paddingRight="15dp"
    tools:context="com.lakshay.display.piechart.ContactActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Your Name"
        android:textStyle="bold"
        android:paddingLeft="20dp"
        android:textSize="22dp"/>


    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/background_light"
        android:inputType="text"
        android:paddingBottom="20dp"


        android:paddingLeft="20dp" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Your Address"
        android:textStyle="bold"
        android:paddingLeft="20dp"
        android:textSize="22dp"/>


    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPostalAddress"
        android:id="@+id/address"
        android:paddingBottom="20dp"
        android:paddingLeft="20dp"
        android:background="@android:color/background_light"



        />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Phone Number"
        android:textStyle="bold"
        android:paddingLeft="20dp"
        android:textSize="22dp"/>

    <EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="phone"
    android:id="@+id/number"
        android:paddingBottom="20dp"
        android:background="@android:color/background_light"

        android:paddingLeft="20dp"

    />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Email"
        android:textStyle="bold"
        android:paddingLeft="20dp"
        android:textSize="22dp"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress"
        android:id="@+id/email"
        android:paddingBottom="20dp"
        android:paddingLeft="20dp"
        android:background="@android:color/background_light"


        />



</LinearLayout>

...................

4 个答案:

答案 0 :(得分:0)

首先,您必须从xml获取Button个ID。或者您将获得NullPointerException,因此请更改您的onCreate

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn1 = (Button)findViewById(R.id.one); //This line
    btn2 = (Button)findViewById(R.id.two); //and this line
    btn1.setOnClickListener(this);
    btn2.setOnClickListener(this);
}

如果您想使用Class调用意图,可以看到this解决方案

或者

你可以简单地调用另一个这样的活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn1 = (Button)findViewById(R.id.one); //This line
    btn2 = (Button)findViewById(R.id.two); //and this line
    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(firstActivity.this, secondActivity.class));
        }
    });
}

答案 1 :(得分:0)

假设您有两个活动:Activity1.java和Activity2.java。

从Activity1启动Activity2只需执行:

  

final Intent intent = new Intent(this,Activity2.class);&gt;
startActivity(intent)

如果要在按钮单击时启动活动,则必须在onClickListener中编写此代码。为此,请在Activity1 xml文件中的按钮定义中编写以下属性。

  

机器人:ONCLICK =&#34; onButtonClick&#34;

然后在您的活动中编写以下监听器:

  

public void onButtonClick(final View v){   
//把你的意图放在这里   
}

答案 2 :(得分:0)

This code help you ....   

 public class MainActivity extends AppCompatActivity {
         Button btn1 ;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            button = (Button)findViewById(R.id.btn1);
            final String name = editText.getText().toString();
            button.setOnClickListener(new View.OnClickListener() {//when your btn1 button press
                public void onClick(View v) {
                 Intent intent = new Intent(this, Activity2.class);//this is call your second activity
                 startActivity(intent);//start activity
                }
            });
        }
    }

答案 3 :(得分:0)

我作为清单的答案:

1.-如果您正在使用Android工作室,您应该与助手创建第二个活动,这样您就不会遇到更多并发症。 第二个活动必须有一个xml文件和一个类文件。

2.-您应该在活动的xml文件中为您的按钮添加android:onClick属性。

3.-您的第二个活动必须在类文件中使用onCreate方法来填充第二个活动的内容。

3b.-您可以将onCreate保留为默认内容,但您的xml文件必须包含文本视图的信息。 如果需要,我可以进一步详细说明。