每次有人点击不同的图片时,我都会尝试使用setText在同一版面中显示不同的文字。 因此,所有布局文件保持不变,唯一需要更改的是该布局中的android:文本。
我创建了一个带有case语句的类,用于当有人按下图片然后调用setText()时。
但看起来甚至没有调用setText。因为我可以看到在同一个case语句中调用的Log.v但文本没有改变。
PictureInfo.java
public class PictureInfo extends Activity implements OnClickListener {
private static final String TAG = "Popup";
public TextView infoText;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
infoText = (TextView)inflater.inflate(R.layout.information, null);
View a1Button = findViewById(R.id.a1);
a1Button.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
switch(v.getId())
{
case R.id.a1:
Intent a = new Intent(this, Information.class);
startActivity(a);
Log.v(TAG, "Change setText");
infoText.setText(R.string.a2_text);
break;
}
}
}
information.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/information_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/a1_text"
/>
答案 0 :(得分:0)
将代码的顺序更改为:
//First change text
Log.v(TAG, "Change setText");
infoText.setText(R.string.a2_text);
//Then call new activity
Intent a = new Intent(this, Information.class);
startActivity(a);
瞧!
答案 1 :(得分:0)
您似乎正在夸大layout
- R.layout.information
,但将其转换为TextView
。我真的不确定你在那里做什么。
我想您希望目标Activity
在其布局中使用源Activity
为其提供的某些文字。为什么不将id
上显示的文字的Extra
作为Intent
传递给他?
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.a1:
Intent a = new Intent(this, Information.class);
intent.putExtra("com.packagename.identifier", R.string.a2_text);
startActivity(a);
break;
}
}
然后在您的信息活动中:
public class Information extends Activity {
...
TextView myTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
...
myTextView = (TextView) findViewById(R.id.myTextViewId);
...
Bundle extras = getIntent().getExtras();
if (extras != null) {
int textId = extras.getInt("com.packagename.identifier");
infoText.setText(textId);
}
}
}