这是我的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显示?
答案 0 :(得分:3)
findViewById(R.id.pwdisplay)
返回View
。 View
没有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!");