在Java代码中为textview设置文本

时间:2017-01-27 15:12:02

标签: java android textview

这是我的activity_main.xml

<EditText
    android:layout_width="200dp"
    android:layout_height="100dp"
    android:hint="@string/str3"
    android:id="@+id/line2"
    android:layout_below="@id/line1" />
<Button
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:layout_toRightOf="@id/line2"
    android:layout_below="@id/line1"
    android:text="@string/str4"
    android:onClick="method2"/>

我想显示在另一个活动中输入的文本,但不是像Activity tutorial那样(在第二个活动中创建另一个TextView,仅在那里设置文本)。

这是我的display2.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display2);

    Intent intent2 = getIntent();

这是在我的activity_display2.xml

<TextView
    android:id="@+id/pwdisplay"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:textStyle="bold|italic"
    android:padding="30dp"
    />

这就是我想要做的(在main_activity.java中)

public void method2(View view) {
    Intent intent2 = new Intent(this, display2.class);
    EditText enteredpw = (EditText) findViewById(R.id.line2);
    String pw = enteredpw.getText().toString();
    findViewById(R.id.pwdisplay).setText(pw);  <--Error here
    startActivity(intent2);
}

我正在尝试在main_activity.java本身设置pwdisplay TextView的文本,但是出现错误&#34;无法解析方法setText(java.lang.String)&#34; < / em>的

OR

用户在EditText @id/line2中输入的文本是否可以通过activity_display2.xml显示?

7 个答案:

答案 0 :(得分:3)

findViewById(R.id.pwdisplay)返回ViewView没有setText方法。你需要施放:

((TextView)findViewById(R.id.pwdisplay)).setText(pw);

答案 1 :(得分:1)

您无法在另一个Activity中操作一个Activity中的小部件。为了做我认为你想做的事情,你必须传递通过意图输入的文本。 E.g:

public void method2(View view) {
    Intent intent2 = new Intent(this, display2.class);
    EditText enteredpw = (EditText) findViewById(R.id.line2);
    String pw = enteredpw.getText().toString();
    intent2.putExtra("KEY", pw);
    startActivity(intent2);
}

//display2.java
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display2);

    Intent intent2 = getIntent();
    String pw = intent2.getStringExtra("KEY");
    findViewById(R.id.pwdisplay).setText(pw);

答案 2 :(得分:0)

您的代码不一致。这解决了您的问题,因为您必须将findViewById转换为TextView,否则编译器将无法知道您处理TextView。

    Intent intent2 = new Intent(this, display2.class);
    EditText enteredpw = (EditText) findViewById(R.id.line2);
    String pw = enteredpw.getText().toString();
    ((TextView)findViewById(R.id.text)).setText(pw);  
    startActivity(intent2);

但是你又做了这样的事情:

    EditText enteredpw = (EditText) findViewById(R.id.line2);

您必须选择使用这样的简短版本:

    ((TextView)findViewById(R.id.text)).setText(pw);

    TextView textView = (TextView)findViewById(R.id.text);
    textView.setText(pw);

但现在我读到你想要将用户输入的文本发送到第二个活动。这可以通过调用将其提供给意图来完成:

  intent2.putExtra("text",pws);

并使用

将其添加到新活动中
    Bundle extras = getIntent().getExtras(); 
    String text;

    if (extras != null) {
      text = extras.getString("text");
      // set the text to the textview.
      ((TextView)findViewById(R.id.text)).setText(text);
    }

答案 3 :(得分:0)

欢迎使用Android开发

你不能从其他类似的活动中设置TextView的文本,你可以做一些事情,但我会向你解释最容易的事情。

在MainActivity中提出:

public void method2(View view) {
    Intent intent2 = new Intent(this, display2.class);
    EditText enteredpw = (EditText) findViewById(R.id.line2);
    String pw = enteredpw.getText().toString();
    intent2.putExtra("message", pw);
    startActivity(intent2);
}

在你的display2类

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display2);
    String message; 
    message = getIntent().getExtras().getString("message");
    TextView pwdisplay = (TextView) findViewById(R.id.pwdisplay);
    pwdisplay.setText(message);
}

这就是正在发生的事情,想象你的MainActivity中的Intent就像一封信,你可以在信中写下你在display2活动中需要的一些东西,在这种情况下我们有intent2.putExtra("message", pw);我们发送字符串的地方,在display2类中,我们在行message = getIntent().getExtras().getString("message");中收到此内容,稍后我们将此字符串放在TextView pwdisplay.setText(message);中。

答案 4 :(得分:0)

你找不到id为“pwdisplay”的textview,因为它不在main_activity中,所以修改你的代码如下:

// MainActivity code 

public void method2(View view) {
    Intent intent2 = new Intent(this, display2.class);
    EditText enteredpw = (EditText) findViewById(R.id.line2);
    String pw = enteredpw.getText().toString();
    Intent intent2 = new Intent(this, MainActivity.class);
    // passed your entered text to the next activity using the line below:
    // KEY= text_to_display, his value equal the entered text 

   intent2.putExtra("text_to_display","some text here");

    startActivity(intent2);
}

// on display2.java "Activity" do modify it like below code:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display2);

    Intent intent2 = getIntent();
    // get the passed text from the given intent
    String pw = intent2.getExtras().getString("text_to_display",null);
    TextView myTxView = (TextView) findViewById(R.id.pwdisplay);
    if(pw != null){
       myTxView.setText(pw);
    }

}

享受!

答案 5 :(得分:0)

package com.kibjob50.provaspeec;

import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.speech.RecognizerIntent;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
private final int REQ_CODE = 100;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView = findViewById(R.id.text);
    ImageView speak = findViewById(R.id.speak);
    speak.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                    RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
            intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Need to speak");
            try {
                startActivityForResult(intent, REQ_CODE);
            } catch (ActivityNotFoundException a) {
                Toast.makeText(getApplicationContext(),
                        "Sorry your device not supported",
                        Toast.LENGTH_SHORT).show();
            }
        }
    });
}
   @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case REQ_CODE: {
            if (resultCode == RESULT_OK && null != data) {
                ArrayList result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                textView.setText(result.get(0));
            }
            break;
        }
    }
}

}

在网络上找到的上述示例在语句“ textView.setText(result.get(0));更改为 “ textView.setText((CharSequence)result.get(0));”作品!希望对您有所帮助。

答案 6 :(得分:-1)

使用butterknife绑定视图:

@Bind(R.id.text_view) TextView myTextView;

然后在你的方法中:

myTextView.setText("Hello!");