5

我在布局文件夹中创建了一个新的 .xml 文件,名为log.xml. 它只包含一个TextView.

是否可以在我的主要活动的 log.xml 中的 textview 上设置文本?还是只能在使用 log.xml 作为视图的活动中设置?希望你能明白我在这里的意思,否则会详细说明。

谢谢

4

4 回答 4

11

如果您没有在“setContentView()”上设置您正在谈论的 xml,您始终可以使用布局充气器来获取它。不过,您必须使用 addView() 将电视添加到当前布局。

LayoutInflater inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View vi = inflater.inflate(R.layout.log, null); //log.xml is your file.
TextView tv = (TextView)vi.findViewById(R.id.tv); //get a reference to the textview on the log.xml file. 
于 2012-06-23T23:40:52.363 回答
0

除非 log.xml 包含在当前可见布局中,否则 findViewById() 将返回 null。

由于您想在新 Activity 中加载 TextView 时设置它的文本,因此可以在用于启动 Activity 的 Intent 中传递新字符串。

在您的第一个活动中的相应 onClick() 中:

Intent intent = new Intent(this, Second.class);
intent.putExtra("myTextViewString", textString);
startActivity(intent);

在您的第二个活动的 onCreate() 中:

setContentView(R.layout.log);

TextView textView = (TextView) findViewById(R.id.textView);
Bundle extras = getIntent().getExtras();
if(extras != null) {
    String newText = extras.getString("myTextViewString");
    if(newText != null) {
        textView.setText(newText);
    }
}
于 2012-06-24T00:03:03.577 回答
0

以下解决方案对我有用 -

  1. 获取布局 XML 文件的视图对象(例如 toast_loading_data) -

    View layout = inflater.inflate(R.layout.toast_loading_data,
            (ViewGroup) findViewById(R.id.toast_layout_root));
    
  2. 从此视图中获取 TextView 元素(例如 TextView id - toast_text)-

    TextView tvToast = (TextView) layout.findViewById(R.id.toast_text);
    
  3. 设置 TextView 的文本 -

    tvToast.setText("Loading data for " + strDate + " ...");
    
  4. 以下是来自 Main Activity 的自定义 Toast 消息的片段 -

    View layout = inflater.inflate(R.layout.toast_loading_data,
            (ViewGroup) findViewById(R.id.toast_layout_root));
    TextView tvToast = (TextView) layout.findViewById(R.id.toast_text);
    tvToast.setText("Loading data for " + strDate + " ...");
    Toast toast = new Toast(getApplicationContext());
    toast.setGravity(Gravity.CENTER, 0, 0); //Set toast gravity to bottom
    toast.setDuration(Toast.LENGTH_LONG);   //Set toast duration
    toast.setView(layout);  //Set the custom layout to Toast
    

希望这可以帮助

于 2015-03-23T10:30:31.593 回答
-1

我想我明白你想说什么。如果你这样做:

TextView tv = (TextView) findViewById(R.id.textView2);    
tv.setText(output);

其中textView2是要设置文本的文本视图的 id,您可以使用该setText()函数将其设置为任何字符串值。希望这可以帮助!

于 2012-06-23T23:41:28.167 回答