[英]How do I add a TextView to another activity
假設我有兩個活動,即AddView
和SeeView
。
在SeeView
,有一個按鈕將帶我進入AddView
活動。 在AddView
活動中,我將輸入將在SeeView
上SeeView
為TextView
的文本。
然后,單擊AddView
上的按鈕,將轉到SeeView
,其中顯示從AddView
添加的TextView。 如何以編程方式執行此操作?
必須在活動之間轉移視圖,您要做的是傳遞文本。 為此,您應該使用活動的startActivityForResult()
和onActivityResult()
方法:
public class SeeView extends Activity {
public static final int REQ_CODE_ADD_VIEW;
private TextView textViewWithText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_of_see_view);
//this TextView is defined in xml: /res/layout/layout_of_see_view.xml
//make sure its id is "@+id/text_view_with_text"
textViewWithText=(TextView) findViewById(R.id.text_view_with_text);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//intent for AddView activity
Intent intent=...;
startActivityForResult(intent, REQ_CODE_ADD_VIEW, null);
}
})
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode,resultCode,data);
if (resultCode==RESULT_OK) {
if (requestCode==REQ_CODE_ADD_VIEW) {
String text=data.getStringExtra("text", "");
textViewWithText.setText(text);
}
}
}
}
您的第二項活動:
public class AddView extends Activity {
private EditText editText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_of_add_view);
//this is done in case user quits your activity before
//button is pressed
setResult(RESULT_CANCELLED);
textViewWithText=(TextView) findViewById(R.id.edit_text);
findViewById(R.id.another_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//prepare result for SeeView activity
Intent intent=new Intent();
intent.putStringExtra("text", editText.getText().toString());
//set the result, it will be passed to onActivityResult() in SeeView activity
setResult(RESULT_OK, intent);
finish();
}
})
}
}
在您的FirstActivity中,說主要活動,您有一個editext和一個按鈕。 用戶在editext中輸入值。 在“按鈕”上單擊以獲取該值。 使用意圖將值傳遞給secondactivity。 在第二個活動中,檢索值並在textview中顯示該值。
addView.setOnClickListener(new OnClickListener()
{
Intent i= new Intent("com.example.secondActivity");
// Package name and activity
// Intent i= new Intent(MainActivity.this,SecondActivity.Class);
// Explicit intents
i.putExtra("key",editext.getText().toString());//get value from editext
// Parameter 1 is the key
// Parameter 2 is your value
startActiivty(i);
});
在第二個活動中檢索它:
Bundle extras = getIntent().();
if (extras != null) {
TextView tv= (TextView) findViewById(R.id.textview)
String value = extras.getString("key");
//get the value based on the key
tv.setText(value);
}
編輯:在第二個活動中,您可以執行以下類似操作
second.xml
<?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"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="74dp"
android:src="@drawable/ic_launcher" />
<LinearLayout
android:layout_width="fill_parent"
android:id="@+id/ll"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="157dp"
android:orientation="vertical" >
</LinearLayout>
</RelativeLayout>
第二活動
public class SecondActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
LinearLayout ll = (LinearLayout) findViewById(R.id.ll);
Bundle extras = getIntent().getExtras();
if(extras!=null)
{
TextView tv= new TextView(this);
tv.setText(extras.getString("key").toString());
ll.addView(tv);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.