Android TextView文本更改错误

时间:2014-02-05 14:18:49

标签: android android-layout textview android-activity

我有一个显示布局,其中两个项目是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();
}
}

2 个答案:

答案 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)