关于页面跳转及数据传输的作业


-要求
a) 在主屏幕输入自己的姓名,单击进入评估按钮,进入第二个界面,并将主屏幕输入的姓名传递给第二个界面;
b) 在第二个界面进行问题回答;
c) 第二个界面的回答结果返回第一个界面并显示。


  • xml上的布局:
    因为要做页面跳转这里要制作两个布局 只要就是应用RelativeLayout进行布局
    就不详说了 直接上代码
  • activity_main2的代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.administrator.acitivityapplication.Main2Activity"
    android:orientation="vertical">
    <TextView
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_centerInParent="true"
        android:text=""
        style="@style/ZT_dx"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_below="@+id/btn"
        android:weightSum="1">
        <Button
            android:id="@+id/btn_yes"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:text="@string/yes"
            style="@style/Theme"
            android:onClick="onClick1"/>
        <Button
            android:id="@+id/btn_no"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:text="@string/no"
            style="@style/Theme"
            android:onClick="onClick1"/>

    </LinearLayout>
</RelativeLayout>
  • activity_main的代码:
 <?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.example.administrator.acitivityapplication.MainActivity">
    <EditText
        style="@style/ZT_dx"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_centerInParent="true"
        android:hint="@string/hint"
        android:id="@+id/edt" />

    <LinearLayout
        android:id="@+id/lin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_below="@+id/edt"
        android:layout_centerHorizontal="true"
        android:weightSum="1">
        <Button
            android:id="@+id/btn_eva"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:text="@string/evaluate"
            style="@style/Theme"
            android:onClick="onClick1"/>
        <Button
            android:id="@+id/btn_quit"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:text="@string/quit"
            style="@style/Theme"
            android:onClick="onClick1"/>
    </LinearLayout>

    <TextView
        android:id="@+id/txt_result"
        android:onClick="onClick1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_below="@+id/lin"
        android:layout_centerHorizontal="true"
        android:text="@string/evaluate_result"
        style="@style/ZT_dx"/>

</RelativeLayout>
  • 布局图片展示:
    图片(activity_mian): 图片(activity_mian2):

接下来是效果实现的的部分,首先要实现页面的跳转功能 就是从activity_mian页面跳转到activity_mian2页面。为按键设置监听器后用Intent类来实现这一效果,需要注意的是要在mainfests中加入

<activity android:name=".Main2Activity"/>

这一段代码。
然后是实现页面跳转的代码:

public void onClick1(View view){
        switch(view.getId()){
            case R.id.btn_eva:
                ++a;
                in_assess();
                break;
            case R.id.btn_quit:
                a=0;
                finish();
                break;
        }

private void in_assess() {
        Intent it = new Intent(MainActivity.this,Main2Activity.class);
        EditText edt=(EditText)findViewById(R.id.edt);
        it.putExtra("name",edt.getText().toString());
        startActivity(it);
    }

在监听事件onClick下用了一个switch语句点击进入评价按钮就执行in_assess()方法,在这一方法中就是实现页面跳转的代码。点击退出按键就退出程序。这些代码是打在activity_main中的

  • 跳转之后在activity_main2中进行问题回答
    在activity_main2中接受从activity_main中传过来的数据,还是应用Intent类
    代码如下:
 Intent it=getIntent();
        String name = it.getStringExtra("name");
        TextView btn = (TextView)findViewById(R.id.btn);
        String  rt=name+"同学:学习Android有没有信心?";
        btn.setText(rt);

-从activity_main2返回activity_main并返回数据
在这里碰到了难点,如果直接在activity_main2中写入Intent传输数据然后在activity_main中用Intent接受数据,写完代码后在打开程序的情况下就会出现如下情况
图片

解决方法是在activity_main中声明一个static int型的类变量并赋值为0。当点击进入评价按钮时这一类变量加1,然后在只有当这一变量大于0的情况下才接受返回的数据。

然后就是如何返回对应的数据没有解决方法是在返回没有的时候在传递一个数值1和2,在activity_main中用if语句如果接受到的数值是1就接受,接受到2就执行接受没有数据 最后在TextView中显示。
这里的思路是通过类变量的改变来控制是否接受数据,什么数值接受什么数据。

  • activity_main中的代码
public class MainActivity extends AppCompatActivity {
    static int a =0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView txt_result=(TextView)findViewById(R.id.txt_result);
        
        if(a>0){
            Intent it1 =getIntent();
            int odd= it1.getIntExtra("oddnum",1);
            int even=it1.getIntExtra("evennum",2);
            if(odd==1){
                String rt = it1.getStringExtra("result");
                String rt2="评论的内容结果为:"+rt;
                txt_result.setText(rt2);
            }
            if(even==1){
                String rt = it1.getStringExtra("result");
                String rt2="评论的内容结果为:"+rt;
                txt_result.setText(rt2);
            }
        }
        }
    
    public void onClick1(View view){
        switch(view.getId()){
            case R.id.btn_eva:
                ++a;
                in_assess();
                break;
            case R.id.btn_quit:
                finish();
                break;
        }

    }

    private void in_assess() {
        Intent it = new Intent(MainActivity.this,Main2Activity.class);
        EditText edt=(EditText)findViewById(R.id.edt);
        it.putExtra("name",edt.getText().toString());
        startActivity(it);
    }
}
  • activity_main2中的代码
public class Main2Activity extends AppCompatActivity {
    @Override
    protected void onCreate( Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        Intent it=getIntent();
        String name = it.getStringExtra("name");
        TextView btn = (TextView)findViewById(R.id.btn);
        String  rt=name+"同学:学习Android有没有信心?";
        btn.setText(rt);
    }
       public void onClick1(View view){
        switch(view.getId()){
            case R.id.btn_yes:
                backY();
                break;
            case R.id.btn_no:
                backN();
                break;
        }
    }


    private void backN() {
        Intent it1 = new Intent(Main2Activity.this,MainActivity.class);
        it1.putExtra("result","没有");
        it1.putExtra("evennum",2);
        startActivity(it1);
    }

    private void backY() {
        Intent it1 = new Intent(Main2Activity.this,MainActivity.class);
        it1.putExtra("result","有");
        it1.putExtra("oddnum",1);
        startActivity(it1);
    }

}

最后的实现效果:
图片图片
图片

posted @ 2017-04-09 20:27  air10086  阅读(269)  评论(1)    收藏  举报