【问题标题】:Android TextView Text Change ErrorAndroid TextView 文本更改错误
【发布时间】:2014-02-05 14:18:49
【问题描述】:

我有一个显示布局,其中一个是 imageView,另一个是 TextView。我正在使用这个布局显示很多东西,但是有一个问题。问题是假设我运行一个活动使用这个布局这个活动填充它并杀死自己。稍后如果我调用另一个活动使用该布局,它会更改图像但文本仍然相同。我不想发布所有代码但如果你们需要我可以发布它。

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());

这是我的第一个电话让我们假设第二个电话的代码是

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();
}
}

【问题讨论】:

  • 您不必发布所有代码,但如果没有相关部分,我们将无法为您提供帮助。
  • 该文本将是您每次加载时layout.xml 文件中的默认文本,除非您保存该值并在为layout 充气时专门设置它。我认为您需要提供 一些 代码和/或更好的解释,因为这很令人困惑。
  • 这是我在程序中调用的代码。
  • 您是否检查了您的try/catch 以查看您是否遇到异常或result 是否正在初始化为预期值?
  • 我看起来它返回不同的数据,但我无法更改文本。

标签: android android-layout textview android-activity


【解决方案1】:

您不能使用文本视图将数据从一个活动传递到另一个活动。

一种方法是使用额外的。当您打开下一个活动时,您可以这样做:

   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);
    ....

}

但是,如果您的第一个 Activity 不是打开第二个 Activity 的 Activity,您可能会更轻松地将数据存储在单例中。因此,在您的第一个活动中,当您获取数据时:

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());
    ....

【讨论】:

  • 我有不同类型的数据我不想传递任何东西我只想每次都将布局的文本更改为新数据。
  • 那还不清楚你想要什么。从您发布的代码中,您没有预料到发生了什么错误?
  • 好的。我有一个布局和第一个代码我用它来显示一些东西,当我按下返回按钮时,活动会自行终止,稍后我将启动另一个活动来显示另一个数据但我无法删除旧数据,所以这是我的问题。
  • 对不起,我只是不明白。从您发布的代码中,我看不出旧的已完成活动对您的第二个活动有何影响。
  • 活动是独立的,但布局文本在第一个活动之后没有机会。
【解决方案2】:

根据您所说的以及我的理解,我认为您正在对布局 xml 中的文本进行硬编码。
如果您需要为您的 textView 维护一些值,请查看首选项 API,以便您可以存储最后一个值并在加载 Activity 的布局后将其重置。
如果这不是您想要做的,请更具体(举个例子并向我们展示您的布局 xml)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多