我有一个显示布局,其中两个项目是imageView,另一个是TextView。我使用这个布局显示很多东西但是有一个问题。问题是让我说我运行一个活动使用这个布局这个活动填充它并自杀。后来如果我调用另一个Activity使用该布局它会改变图像但文本仍然相同。我不想发布所有代码但是如果你们需要我可以发布它。
setContentView(R.layout.info_display_tablet);
iv = (ImageView) findViewById(R.id.imageView1);
tx = (TextView) findViewById(R.id.textView1);
try {
result = MethodInfoGetter.methodRequest("CTVIslemleriGetir", "", "");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tx.setText("");
iv.setImageResource(R.drawable.cevre_temizlik);
tx.setText(result.get(0).get(1).toString());
这是我的第一个调用let的asume和第二个调用的代码是
public class BalikesirTarih extends Activity
{
ArrayList<ArrayList> result = new ArrayList<ArrayList>();
ImageView iv;
TextView tx;
Bitmap bmp = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.info_display_tablet);
iv = (ImageView) findViewById(R.id.imageView1);
tx = (TextView) findViewById(R.id.textView1);
try {
result = MethodInfoGetter.methodRequest("BalikesirTarihiGetir", "", "");
Log.i("Balikesir tarihi log denemesi",result.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
new asTask().execute();
}
private class asTask extends AsyncTask<Void , Void ,Void> {
@Override
protected Void doInBackground(Void... params) {
URL url = null;
try {
url = new URL("http://balikesir.bel.tr/Balikesir_Tarihi/Resim_b_1.jpg");
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
iv.setImageBitmap(bmp);
tx.setText("");
tx.setText(result.get(0).get(1).toString());
}
}
@Override
protected void onPause() {
super.onPause();
finish();
}
}
答案 0 :(得分:0)
您无法使用文本视图将数据从一个活动传递到另一个活动。
一种方法是额外的。当您打开下一个活动时,您可以这样做:
Intent intent = /*create intent for opening the next activity*/;
intent.addExtra("textLabel", tx.getText());
startActivity(intent); //or however you are opening next activity
然后在下一个活动中:
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.info_display_tablet);
iv = (ImageView) findViewById(R.id.imageView1);
tx = (TextView) findViewById(R.id.textView1);
String passedTextLabel = getIntent.getExtra("textLabel","");
tx.setText(passedTextLabel);
....
}
但是,如果您的第一个活动不是打开第二个活动的活动,那么您可能更容易将数据存储在单个活动中。所以在你的第一个活动中,当你得到数据时:
tx.setText(result.get(0).get(1).toString());
MySingleton.instance().setTextLabel(result.get(0).get(1).toString());
然后在下一个活动中:
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.info_display_tablet);
iv = (ImageView) findViewById(R.id.imageView1);
tx = (TextView) findViewById(R.id.textView1);
tx.setText(MySingleton.instance().getTextLabel());
....
答案 1 :(得分:0)
根据您所说的内容以及我所理解的内容,我认为您正在对布局xml上的文字进行硬编码。
如果您需要为textView维护一些值,那么请查看首选项API,这样您就可以存储最后一个值,并在活动加载后重置它。
如果这不是您想要做的,请更具体(给出一个示例并向我们展示您的布局xml)