在另一个类

时间:2017-07-20 17:38:58

标签: java android

我在互联网上研究过像我这样的许多问题,似乎没有人在做我想做的事情。我想要做的是在我的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。我能以任何方式解决这个问题吗?任何帮助将不胜感激:)

2 个答案:

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