最近在做一个应用商店的项目。需要在程序的主界面选择应用(listview中的一个item)下载之后,在应用管理界面(主要控件是一个listview)添加该应用(即在listview中添加该应用的item)。
由此化简为,在主Activity中更改另外一个Activity中的UI
首先先创建两个Activity(MainActivity和SecondActivity),布局文件为activity_main和second_activity
activity_main的布局:主要是一个TextView和两个Button
<LinearLayout 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:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="4">
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is MainActivity"
/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
<Button
android:id="@+id/btn_download"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="download"/>
<Button
android:id="@+id/btn_open"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Open"/>
</LinearLayout>
</LinearLayout>
MainActivity.class代码为:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements View.OnClickListener {
private static final int CHANGE = 0x111;
private TextView textView;
private Button btn_open,btn_download;
private MyApplication application;
public static final String action = "jason.broadcast.action";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
textView = (TextView) findViewById(R.id.textview);
btn_open = (Button) findViewById(R.id.btn_open);
btn_download = (Button) findViewById(R.id.btn_download);
application = (MyApplication) getApplication();
btn_open.setOnClickListener(this);
btn_download.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.btn_open:
Intent intent = new Intent();
//跳转Activity
intent.setClass(MainActivity.this, SecondActivity.class);
startActivity(intent);
break;
case R.id.btn_download://改变SecondActivity中的textview中的text的内容
application.setString("this activity has been changed");
Toast.makeText(getApplicationContext(),"start to download",Toast.LENGTH_SHORT).show();
break;
}
}
}
activity_second的布局为:(主要是一个textview)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textview_second"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is SecondActivity"/>
</LinearLayout>
SecondActivity中的代码:
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
/**
* Created by Administrator on 2015/8/9.
*/
public class SecondActivity extends Activity{
private static final int CHANGE = 0x111;
private Button btn_change;
public TextView SecondTextView;
private MyApplication application;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
init();
}
private void init() {
SecondTextView = (TextView) findViewById(R.id.textview_second);
application = (MyApplication) getApplication();
if (application.getString() != null)
{
SecondTextView.setText(application.getString());
}
}
}
程序运行时,MainActivity界面的TextView显示的内容是This is MainActivity,点击open按钮,跳转到SecondActivity界面,其中的TextView显示的内容是This is SecondActivity
返回到MainActivity界面,点击download按钮,会提示“start to download”,这时,再点击open按钮跳转到SecondActivity界面,其中的TextView改变为“this activity has been changed”,达到了所需效果。
该程序主要是用到了Application,当在MainActivity中点击download按钮时,调用application的setString方法,然后再在SecondActivity中调用getString方法,然后改变TextView中的内容。
之前想到的办法是利用Handler或者是BroadCast实现,参考网址:http://blog.csdn.net/veryitman/article/details/6611138
网址中的程序实现的功能相当于是在SecondActivity中点击按钮改变MainActivity中的内容,参照其中的思路改变了Activity中的Button的功能之后运行会报错,不知道是哪里出了问题,所以换了一个解决思路。
第一步完成了,虽然离应用管理的下载功能还很遥远。
下一步就是将两个Activity中的textview换为listview