我在互联网上研究过像我这样的许多问题,似乎没有人在做我想做的事情。我想要做的是在我的high_risk.xml文件中获取一个当前空白的textview,并根据是否在另一个类中单击一个按钮使其具有文本。这是我到目前为止所拥有的......
Question13Activity(如果单击yes按钮,我希望能够在HighRisk活动中设置文本)
yes = (Button) findViewById(R.id.finalYes);
yes.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Intent intent = getIntent();
String text = intent.getStringExtra("New Text");
t = (TextView) findViewById(R.id.abusedOrNah);
t.setText(text);
Intent myIntent = new Intent(v.getContext(), Question13Activity.class);
startActivity(myIntent);
}
});
这就是我在highrisk活动类中定义静态变量的方法......
HighRiskActivity(这是我想要设置和显示文本的地方)
public static TextView t;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.high_risk);
Intent myIntent = new Intent(HighRiskActivity.this, Question12Activity.class);
myIntent.putExtra("Text", "New Text");
startActivity(myIntent);
每当我尝试访问另一个类中的t的内容并更改它的文本时,它总是返回null。我能以任何方式解决这个问题吗?任何帮助将不胜感激:)
答案 0 :(得分:1)
您可以使用Bounds将数据传输到新Activity并从那里设置文本:
Intent myIntent = new Intent(v.getContext(), Question13Activity.class);
myIntent.putExtra("<KEY-NAME>", "<TEXT>");
startActivity(myIntent);
在Question13Activity.class中:
Intent intent = getIntent();
String text= intent.getStringExtra("<KEY-NAME>");
t = (TextView) findViewById(R.id.abusedOrNah);
t.setText(text);
更新:
使用它:
HighRiskActivity.class:
yes = (Button) findViewById(R.id.finalYes);
yes.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Intent myIntent = new Intent(v.getContext(), Question13Activity.class);
myIntent.putExtra("TestKey", "My new Text");
startActivity(myIntent);
}
});
Question13Activity.class:
TextView t;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.high_risk);
Intent intent = getIntent();
String text= intent.getStringExtra("TestKey");
t = (TextView) findViewById(R.id.abusedOrNah);
t.setText(text);
答案 1 :(得分:0)
要从其他班级setText()
(例如,来自您的自定义班级),您需要指定您希望这样做的活动。
除非某个类确实引用了您的上下文,否则您无法调用“findViewById()&#39;
为此,您使用Context作为自定义类构造函数的参数。
在您设置了上下文后,您就可以调用
TextView txtView = (TextView) ((Activity)context).findViewById(R.id.text);
txtView.setText("foo");
}