Android setText()不同的布局文件

时间:2011-01-28 11:35:35

标签: android

每次有人点击不同的图片时,我都会尝试使用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"
      />

2 个答案:

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