使用android编写代码实现从第一个界面分别能跳转到其它两个界面共三个界面布局,第一个界面有文本框、编辑框、单选按钮、复选框按钮、按钮、Listview控件、Fragment。其它两个页面也可返回第一个页面,并且将一个界面的数据通过Activity的数据传递传送到另一个页面。获取某个界面的数据,将数据存储到外部文件,数据存储方式采用SQLite的方式。根据各自项目的需求在某个页面中通过自定义广播、Toast提示实现一条广播的发送。在第一个页面当点击按钮时利用服务、MediaPlayer实现播放、停止播放背景音乐的功能。
时间: 2023-12-20 17:03:50 浏览: 156
好的,这是一个比较完整的Android开发项目,需要使用多种技术和组件,下面我会逐一讲解。
## 1. 布局设计
首先,在res/layout文件夹下创建三个XML布局文件,分别对应三个界面。在这里我们假设三个布局文件分别为activity_main.xml、activity_second.xml和activity_third.xml。
在activity_main.xml中,添加文本框、编辑框、单选按钮、复选框按钮、按钮、ListView控件和Fragment。具体实现可以参考如下代码:
```xml
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入文本" />
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radioButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton 1" />
<RadioButton
android:id="@+id/radioButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton 2" />
</RadioGroup>
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckBox" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="跳转到第二个界面" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
```
在activity_second.xml和activity_third.xml中,可以根据需求添加相应的控件。
## 2. Activity之间的跳转和数据传递
在MainActivity中添加点击按钮跳转到第二个界面和第三个界面的代码:
```java
public class MainActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("key", "value");
startActivityForResult(intent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK) {
String result = data.getStringExtra("result");
Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
}
}
}
```
在SecondActivity中添加返回MainActivity并传递数据的代码:
```java
public class SecondActivity extends AppCompatActivity {
private Button button2;
private EditText editText2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
editText2 = findViewById(R.id.editText2);
button2 = findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("result", editText2.getText().toString());
setResult(RESULT_OK, intent);
finish();
}
});
}
}
```
同理,在ThirdActivity中也要添加返回MainActivity并传递数据的代码。
## 3. 数据存储
在Android中,可以使用SQLite数据库进行数据存储。首先,需要创建一个继承自SQLiteOpenHelper的类,用来操作数据库。
```java
public class DBHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "my_db";
private static final int DB_VERSION = 1;
public static final String TABLE_NAME = "my_table";
public static final String COLUMN_ID = "id";
public static final String COLUMN_NAME = "name";
private static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_NAME + " TEXT)";
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public long insert(String name) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_NAME, name);
long id = db.insert(TABLE_NAME, null, values);
db.close();
return id;
}
public Cursor getAllData() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
return cursor;
}
}
```
在MainActivity中,可以使用DBHelper类来进行数据的插入和查询操作。
```java
public class MainActivity extends AppCompatActivity {
private DBHelper dbHelper;
private EditText editText3;
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new DBHelper(this);
editText3 = findViewById(R.id.editText3);
listView = findViewById(R.id.listView);
findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = editText3.getText().toString();
long id = dbHelper.insert(name);
Toast.makeText(MainActivity.this, "插入成功,id=" + id, Toast.LENGTH_SHORT).show();
showData();
}
});
showData();
}
private void showData() {
Cursor cursor = dbHelper.getAllData();
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
this,
android.R.layout.simple_list_item_1,
cursor,
new String[]{DBHelper.COLUMN_NAME},
new int[]{android.R.id.text1},
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER
);
listView.setAdapter(adapter);
}
}
```
## 4. 广播和Toast提示
在Android中,可以使用广播来实现不同组件之间的通信。首先,需要创建一个自定义的广播接收器。
```java
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String message = intent.getStringExtra("message");
Toast.makeText(context, "接收到广播:" + message, Toast.LENGTH_SHORT).show();
}
}
```
在MainActivity中注册广播接收器,并发送一条广播。
```java
public class MainActivity extends AppCompatActivity {
private MyReceiver myReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myReceiver = new MyReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("my_action");
registerReceiver(myReceiver, intentFilter);
findViewById(R.id.button4).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("my_action");
intent.putExtra("message", "这是一条广播");
sendBroadcast(intent);
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(myReceiver);
}
}
```
## 5. 服务和MediaPlayer
在Android中,可以使用服务来在后台运行一些任务。在这里,我们可以使用服务来播放背景音乐。
```java
public class MusicService extends Service {
private MediaPlayer mediaPlayer;
@Override
public void onCreate() {
super.onCreate();
mediaPlayer = MediaPlayer.create(this, R.raw.music);
mediaPlayer.setLooping(true);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mediaPlayer.start();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
mediaPlayer.stop();
mediaPlayer.release();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
```
在MainActivity中启动服务并播放背景音乐。
```java
public class MainActivity extends AppCompatActivity {
private Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intent = new Intent(this, MusicService.class);
findViewById(R.id.button5).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startService(intent);
}
});
findViewById(R.id.button6).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
stopService(intent);
}
});
}
}
```
到这里,一个完整的Android开发项目就完成了。
阅读全文