-要求javascript
a) 在主屏幕輸入本身的姓名,單擊進入評估按鈕,進入第二個界面,並將主屏幕輸入的姓名傳遞給第二個界面;
b) 在第二個界面進行問題回答;
c) 第二個界面的回答結果返回第一個界面並顯示。java
<?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>
<?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頁面。爲按鍵設置監聽器後用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
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
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); } }
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