關於頁面跳轉及數據傳輸的做業


-要求javascript

a) 在主屏幕輸入本身的姓名,單擊進入評估按鈕,進入第二個界面,並將主屏幕輸入的姓名傳遞給第二個界面;
b) 在第二個界面進行問題回答;
c) 第二個界面的回答結果返回第一個界面並顯示。java


  • 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中加入android

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

這一段代碼。
而後是實現頁面跳轉的代碼:app

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中的ide

  • 跳轉以後在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中顯示。
這裏的思路是經過類變量的改變來控制是否接受數據,什麼數值接受什麼數據。ui

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

}

最後的實現效果:
圖片圖片
圖片this

相關文章
相關標籤/搜索