android中的Activity的開啓StartActivity()和StartActivityForResult()

這幾天接觸android程序,在程序中看見StartActivity()函數,所以在網上百度的時候就出現了和StartActivityForResult()函數的比較,個人感覺比較好,所以就按照樓主給的Demo敲了一遍。但是由於樓主是粘貼的代碼,所以給出來的部分不是太全,對於剛剛接觸的新手來說遇見不少的問題。


 寫了一個關於開啓Activity的Demo:共三個Activity:MainActivity用戶填寫用戶姓名電話城市、CityActivity用於用戶選擇城市,ShowActivity用於展示用戶信息。


首先我還是先把代碼貼出來:

MainActivity.java:

package com.example.test;


import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends Activity implements OnClickListener {
private Button button_city,button_phone,button_save;
private EditText editText_city,editText_name,editText_phone;
private static final int SELECT_CITY_REQUEST =2;
private static final int SELECT_PHONE_REQUEST =3; 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


button_city = (Button)findViewById(R.id.select_city);
button_phone = (Button)findViewById(R.id.phone1);
button_save = (Button)findViewById(R.id.save);
editText_city = (EditText)findViewById(R.id.editText_city);
editText_name = (EditText)findViewById(R.id.editText_name);
editText_phone = (EditText)findViewById(R.id.editText_phone);
       
button_city.setOnClickListener(this);
button_phone.setOnClickListener(this);
button_save.setOnClickListener(this);
  }

public void onClick(View v) {
// TODO 自動生成的方法存根
switch (v.getId()) {
     case R.id.select_city:
          Intent i = new Intent ();
           i.setClass(MainActivity.this, CityActivity.class);
           startActivityForResult(i, SELECT_CITY_REQUEST);
           break;
       case R.id.phone1:
           Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
           pickContactIntent.setType(Phone.CONTENT_TYPE);
           startActivityForResult(pickContactIntent, SELECT_PHONE_REQUEST);
          break;
      case R.id.save:
          String name=editText_name.getText().toString();
          String city = editText_city.getText().toString();
          String phone = editText_phone.getText().toString();
          Intent saveIntent = new Intent(MainActivity.this,ShowActivity.class);
          saveIntent.putExtra("content", "NAME: "+name+"\nCITY:   "+city+"\nPHONE:"+phone);
          startActivity(saveIntent);
            break;
     default:
          break;
     }        
}
}

對應的layout配置:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </TextView>

    <Button
        android:id="@+id/name1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/textView1"
        android:layout_marginTop="28dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="Name" />

    <Button
        android:id="@+id/city1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/name1"
        android:layout_below="@+id/name1"
        android:layout_marginTop="34dp"
        android:text="City" />


    <EditText
        android:id="@+id/editText_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/city1"
        android:layout_toRightOf="@+id/name1"
        android:ems="10" >


        <requestFocus />
    </EditText>


    <EditText
        android:id="@+id/editText_city"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/phone1"
        android:layout_toRightOf="@+id/city1"
        android:ems="10"
        android:inputType="textPersonName" />


    <Button
        android:id="@+id/select_city"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/editText_city"
        android:layout_alignRight="@+id/editText_city"
        android:text="select city" />


    <Button
        android:id="@+id/save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/namephone"
        android:layout_below="@+id/phone1"
        android:layout_marginTop="46dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="save" />


    <Button
        android:id="@+id/phone1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/city1"
        android:layout_marginTop="101dp"
        android:text="select_phone" />


    <EditText
        android:id="@+id/editText_phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/namephone"
        android:layout_toRightOf="@+id/namephone"
        android:ems="10"
        android:inputType="phone" />


    <Button
        android:id="@+id/namephone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/phone1"
        android:layout_marginBottom="47dp"
        android:text="phone" />
save" />
</RelativeLayout>




CityActivity.java:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;


public class CityActivity extends Activity {
private ExpandableListView eListView;


@Override
protected void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);
setContentView(R.layout.layout_city);
initEListView();
}


private void initEListView() {


ExpandableListAdapter adapter = new BaseExpandableListAdapter() {


private String[] countries = new String[] { "China", "USA", "UK" };


private String[][] cities = new String[][] {
{ "BeiJing", "ShangHai", "HongKong", "TaiBei" },
{ "Washington", "New York", "Los Angles", "San Fransico" },
{ "London", "Manchester", "Birmingham", "Liverpool" } };


private TextView getTextView() {
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
TextView textView = new TextView(CityActivity.this);
textView.setLayoutParams(lp);
textView.setGravity(Gravity.CENTER_HORIZONTAL);
textView.setPadding(0, 0, 0, 0);
textView.setTextSize(20);
return textView;


}


public boolean isChildSelectable(int groupPosition,
int childPosition) {
Toast.makeText(
CityActivity.this,
"you have clicked Group:" + groupPosition + "Child:"
+ childPosition + "\n"
+ countries[groupPosition] + "  "
+ cities[groupPosition][childPosition],
Toast.LENGTH_SHORT).show();
Intent i = new Intent();
i.putExtra("city", cities[groupPosition][childPosition]);
setResult(RESULT_OK, i);
finish();
return true;
}


public boolean hasStableIds() {
return true;
}


public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
LinearLayout linearLayout = new LinearLayout(CityActivity.this);
linearLayout.setOrientation(0);


TextView textView = getTextView();
textView.setText(getGroup(groupPosition).toString());
linearLayout.addView(textView);
return linearLayout;
}


public long getGroupId(int groupPosition) {
return groupPosition;
}


public int getGroupCount() {
return countries.length;
}


public Object getGroup(int groupPosition) {
return countries[groupPosition];
}


public int getChildrenCount(int groupPosition) {
return cities[groupPosition].length;
}


public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
TextView textView = getTextView();
textView.setText(getChild(groupPosition, childPosition)
.toString());
textView.setGravity(Gravity.CENTER_HORIZONTAL);
return textView;
}


public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}


public Object getChild(int groupPosition, int childPosition) {
return cities[groupPosition][childPosition];
}

};
eListView = (ExpandableListView) findViewById(R.id.eListView);
      eListView.setAdapter(adapter);

}
}


CityActivity對應的layout配置:




ShowActivity .java:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;


public class ShowActivity extends Activity{
private TextView showTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_show);
showTextView = (TextView)findViewById(R.id.textView1);
      
         Intent i =getIntent();
        String content = i.getStringExtra("content");
        showTextView.setText(content);
}
}

ShowActivity 對應的layout配置文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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"
    tools:context=".MainActivity" >


    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </TextView>


    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView2"
        android:layout_marginLeft="62dp"
        android:layout_marginTop="42dp"
        android:layout_toRightOf="@+id/textView2"
        android:text="TextView" />


</RelativeLayout>





運行成功後出現的畫面:






其中在選擇城市的界面,會有點小錯誤,希望有誰解決了可以跟我說一下:1143403680(qq)


在其中我出現的錯誤:

1:在mainactivity界面中,點擊sclect_city按鈕會閃退出程序,這是因爲在cityactivity.java中,id號沒有查找到:

eListView = (ExpandableListView) findViewById(R.id.eListView);
      eListView.setAdapter(adapter);

2:剛接觸android程序,在創建了三個activity時,要在清單中(AndroidManifest.xml文件中)添加上另外的activity:


3:還有就是上面提到的,雖然在ExpandableListView控件中可以顯示城市名,但是會一閃而過,目前還沒有解決。



好了,基本上我遇見的問題就這幾個,也許是我愚笨了點,還望大神們多多指教。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章