这次主要是设计两个页面的相互转换,设计另一种activity开启方式StartActivityForResult

题目:编写一个程序:用户在第一个页面输入若干个数并提交给第二个页面。第二个页面对这些数从大到小排序并显示排序之后的结果,并将这些数的平均值返回给第一个页面显示。

涉及的知识点:

1.Android intent介绍及使用方法
https://v.youku.com/v_show/id_XMjUwOTc1NDc2MA==

2.java 字符串截取的方式 


3.Intent使用
传值(当前Activity)
Intent intent = new Intent(this,OtherActivity.class);
Intent.putExtra(“key”,“value”);
startActivity(intent);
取值(目标Activity)
Intent intent = getIntent();
String name = intent .getStringExtra(“key”);

4.开始结束Activity这次用的是
启动activity时,要求是有结果返回的
int resquestCode = 100;
Inetnt intent = new Intent(this,OtherActivity.class);
startActivityForResult(intent,reaquestCode);

实现方法获得返回值
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
    //String avg = data.getStringExtra("avg");
    //avg_res.setText(avg);
  }

在目标Activity中设置对应的结果码,设置返回值
Intent result = new Intent();
result.putExtra("key",value);
setResult(resultCode,result);
finish();

最终实现效果图如下:

Android aspectj顺序_Android aspectj顺序

Android aspectj顺序_数组_02

Android aspectj顺序_数组_03

activity_main.xml代码如下:


<TextView
    android:id="@+id/txt"
    style="?android:attr/borderlessButtonStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="@string/txt"></TextView>

<EditText
    android:id="@+id/input"
    style="?android:attr/borderlessButtonStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:autofillHints=""
    android:inputType="date|textUri|textShortMessage|textLongMessage|textAutoCorrect|numberSigned|textVisiblePassword|textWebEditText|textMultiLine|textNoSuggestions|textFilter|number|datetime|textWebEmailAddress|textPersonName|text|textPhonetic|textCapSentences|textPassword|textAutoComplete|textImeMultiLine|textPostalAddress|numberDecimal|textEmailAddress|numberPassword|textCapWords|phone|textEmailSubject|textCapCharacters|time|textWebPassword"
    tools:targetApi="o"></EditText>

<TextView
    android:id="@+id/avg"
    style="@android:style/Widget.Holo.Light.TextView.SpinnerItem"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="@string/avg" />

<EditText
    android:id="@+id/avg_res"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:autofillHints=""
    android:ems="10"
    android:inputType="textPersonName"
    tools:targetApi="o" />

<Button
    android:id="@+id/submit"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="@string/button"></Button>

activity_second.xml代码如下:


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

    <TextView
        android:id="@+id/result"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        style="?android:attr/borderlessButtonStyle"
        android:text="@string/txt1"></TextView>

</LinearLayout>

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

    <EditText
        android:id="@+id/res"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10"
        android:importantForAutofill="no"
        android:inputType="textPersonName" />
</LinearLayout>

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

    <Button
        android:id="@+id/back"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        style="?android:attr/borderlessButtonStyle"
        android:text="@string/button1"></Button>
</LinearLayout>

MainActivity.java代码如下:

private Button submit;
private EditText input,avg_res;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    this.submit = (Button)findViewById(R.id.submit);
    this.input = (EditText)findViewById(R.id.input);
    this.avg_res = (EditText)findViewById(R.id.avg_res);
    submit.setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.N)
        @Override
        public void onClick(View v) {
            //System.out.println(input.getText().toString());
            //avg_res.setText(input.getText().toString());
            Intent intent = new Intent();
            intent.setClass(MainActivity.this,SecondActivity.class);
            intent.putExtra("num",input.getText().toString());
            startActivityForResult(intent,1);
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    String avg = data.getStringExtra("avg");
    avg_res.setText(avg);
}

SecondAcivity.java代码如下:

private Button back;
private EditText res;
String array;
int sum=0;
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    this.res = (EditText)findViewById(R.id.res);
    this.back = (Button)findViewById(R.id.back);
    final Intent intent = getIntent();
    array = intent.getStringExtra("num");
    final String[]  strs=array.split(" ");
    int[] a = new int[strs.length];
    for(int i = 0; i < strs.length; i++)
    {
        //System.out.println(11);
        //先由字符串转换成char,再转换成String,然后Integer
        a[i] = Integer.parseInt(strs[i].toString());
       // System.out.println(a[i]);
    }

    Arrays.sort(a);

    for(int i=0,len=strs.length;i<len;i++){
        res.append(Integer.toString(a[i]));
        sum = sum +a[i];
        res.append(" ");
    }
    //res.setText(array);
     back.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
           String avg = Double.toString(sum*1.0/(strs.length));
           Intent result = new Intent();
           result.putExtra("avg",avg);

           setResult(1,result);
             finish();
         }
     });
}

好啦,说一下我的思路以及卡住的点(好多卡住的是不了解JAVA,不会使用QAQ):

主要是在主界面用editText接收输入的待排序的一些数组(默认空格分隔,这个很重要,涉及后面如何处理,当然可自定义分隔方式)
第一个界面点击提交,把editText里面的一串字符(待排序的数字串)通过intent传输到第二个界面,然后实现跳转到第二个界面,这里也可以直接在第一个界面将字符串转化成Int类型数组,排好序,在传递给第二个界面,由于我自己还不会传递数组的方式,会比较麻烦,就没选择这种方式(QAQ还是因为太菜了)
第二个界面接收到来自第一个界面的字符串信息,利用inal String[] strs=array.split(" ");split函数,实现字符串分割,取出每一个数字(字符型)数组中,再将数组转化成整型数组
for(int i = 0; i < strs.length; i++)
{
a[i] = Integer.parseInt(strs[i].toString());//这里没想到会出现问题,一定要注意要有toString(),不然会有逻辑错误,会闪退
}
之后再利用Arrays.sort函数自动排序,之后计算出平均值,再利用intent传回给第一个界面。

好啦!结束啦!