来自 TextView 的 getText() 问题
getText() from TextView Problems
第一次在这里发帖,希望大家多多支持。
我的问题可能很容易解决,但我被卡住了...我实现了 TextView
和 Button
。 TextView
通过单击按钮获取另一个要显示的随机字符串。
我想从 Textview 获取当前文本,但这没有给我任何值或字符串或错误...
这是 XML 文件:
<TextView
android:id="@+id/res"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.20"
android:background="@drawable/textview"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="30dp"
android:editable = "true"
android:text="generieren"
/>
新文本由 MainActivity
中的以下代码设置:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources resi = getResources();
final String[] ausreden = resi.getStringArray(R.array.ausreden);
Button b = (Button)this.findViewById(R.id.btn);
b.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
TextView aus = (TextView) findViewById(R.id.res);
String g = getRandom(ausreden);
aus.setText(g);
//aus.setTextIsSelectable(true);
}
});
到目前为止,我一直在尝试通过方法 getText() 引用当前显示的 TextView 的值。我的代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.share_menu, menu);
mShareActionProvider=(ShareActionProvider)menu.findItem(R.id.menu_item_share).getActionProvider();
mShareActionProvider.setShareIntent(doShare());
return true;
}
public Intent doShare() {
Intent intent = new Intent(Intent.ACTION_SEND);
TextView textview = (TextView) findViewById(R.id.res);
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT,textview.getText().toString());
intent.setType("text/plain");
return intent;
}
在模拟器中测试我的应用程序,ShareButton 仅向 Messenger 提供文本 "generieren"....
我希望你能给我一些建议,以获得当前设置的文本...
此致
编辑 1,完整 Main_Activity
package com.example.test;
import java.util.Random;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentSender;
import android.content.res.Resources;
import android.graphics.Rect;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.text.Layout;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ShareActionProvider;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources resi = getResources();
final TextView aus = (TextView)findViewById(R.id.res);
final String[] ausreden = resi.getStringArray(R.array.ausreden);
Button b = (Button)this.findViewById(R.id.btn);
b.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
aus = (TextView) findViewById(R.id.res);
String g = getRandom(ausreden);
aus.setText(g);
aus.setTextIsSelectable(true);
}
});
}
private ShareActionProvider mShareActionProvider;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.share_menu, menu);
mShareActionProvider = (ShareActionProvider) `
menu.findItem(R.id.menu_item_share).getActionProvider();`
mShareActionProvider.setShareIntent(doShare());
return true;
}
public Intent doShare() {
TextView aus = (TextView)findViewById(R.id.res);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT,aus.getText().toString());
intent.setType("text/plain");
return intent;
}
public static String getRandom(String[] array) {
int rnd = new Random().nextInt(array.length);
return array[rnd];
}
}
首先,尝试在您的 MainActivity
class 中创建一个全局 属性 TextView myTextView
。这样,您将在 activity 的生命周期内保留对 TextView
的相同引用。
我认为,由于您每次要访问 TextView
的文本时都在检索新实例,因此您只能获得在 xml 文件中设置的默认文本。
使用下面的代码。它将弹出 select 应用程序以发送文本。如果不存在可处理 send
事件的应用程序,那么您的应用程序将崩溃。它还将 send
显示在 textview
中的文本。使用户 textColor
与背景颜色不同。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources resi = getResources();
final String[] ausreden = resi.getStringArray(R.array.ausreden);
Button b = findViewById(R.id.btnClick);
b.setOnClickListener((v) -> {
TextView aus = findViewById(R.id.res);
aus.setText("aaaaaa");
String g = getRandom(ausreden);
aus.setText(g);
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.share_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.menu_item_share) {
startActivity(doShare());
return true;
}
return super.onOptionsItemSelected(item);
}
public Intent doShare() {
Intent intent = new Intent(Intent.ACTION_SEND);
TextView textView = findViewById(R.id.res);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, textView.getText().toString());
return intent;
}
第一次在这里发帖,希望大家多多支持。
我的问题可能很容易解决,但我被卡住了...我实现了 TextView
和 Button
。 TextView
通过单击按钮获取另一个要显示的随机字符串。
我想从 Textview 获取当前文本,但这没有给我任何值或字符串或错误...
这是 XML 文件:
<TextView
android:id="@+id/res"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.20"
android:background="@drawable/textview"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="30dp"
android:editable = "true"
android:text="generieren"
/>
新文本由 MainActivity
中的以下代码设置:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources resi = getResources();
final String[] ausreden = resi.getStringArray(R.array.ausreden);
Button b = (Button)this.findViewById(R.id.btn);
b.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
TextView aus = (TextView) findViewById(R.id.res);
String g = getRandom(ausreden);
aus.setText(g);
//aus.setTextIsSelectable(true);
}
});
到目前为止,我一直在尝试通过方法 getText() 引用当前显示的 TextView 的值。我的代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.share_menu, menu);
mShareActionProvider=(ShareActionProvider)menu.findItem(R.id.menu_item_share).getActionProvider();
mShareActionProvider.setShareIntent(doShare());
return true;
}
public Intent doShare() {
Intent intent = new Intent(Intent.ACTION_SEND);
TextView textview = (TextView) findViewById(R.id.res);
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT,textview.getText().toString());
intent.setType("text/plain");
return intent;
}
在模拟器中测试我的应用程序,ShareButton 仅向 Messenger 提供文本 "generieren"....
我希望你能给我一些建议,以获得当前设置的文本...
此致
编辑 1,完整 Main_Activity
package com.example.test;
import java.util.Random;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentSender;
import android.content.res.Resources;
import android.graphics.Rect;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.text.Layout;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ShareActionProvider;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources resi = getResources();
final TextView aus = (TextView)findViewById(R.id.res);
final String[] ausreden = resi.getStringArray(R.array.ausreden);
Button b = (Button)this.findViewById(R.id.btn);
b.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
aus = (TextView) findViewById(R.id.res);
String g = getRandom(ausreden);
aus.setText(g);
aus.setTextIsSelectable(true);
}
});
}
private ShareActionProvider mShareActionProvider;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.share_menu, menu);
mShareActionProvider = (ShareActionProvider) `
menu.findItem(R.id.menu_item_share).getActionProvider();`
mShareActionProvider.setShareIntent(doShare());
return true;
}
public Intent doShare() {
TextView aus = (TextView)findViewById(R.id.res);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT,aus.getText().toString());
intent.setType("text/plain");
return intent;
}
public static String getRandom(String[] array) {
int rnd = new Random().nextInt(array.length);
return array[rnd];
}
}
首先,尝试在您的 MainActivity
class 中创建一个全局 属性 TextView myTextView
。这样,您将在 activity 的生命周期内保留对 TextView
的相同引用。
我认为,由于您每次要访问 TextView
的文本时都在检索新实例,因此您只能获得在 xml 文件中设置的默认文本。
使用下面的代码。它将弹出 select 应用程序以发送文本。如果不存在可处理 send
事件的应用程序,那么您的应用程序将崩溃。它还将 send
显示在 textview
中的文本。使用户 textColor
与背景颜色不同。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources resi = getResources();
final String[] ausreden = resi.getStringArray(R.array.ausreden);
Button b = findViewById(R.id.btnClick);
b.setOnClickListener((v) -> {
TextView aus = findViewById(R.id.res);
aus.setText("aaaaaa");
String g = getRandom(ausreden);
aus.setText(g);
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.share_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.menu_item_share) {
startActivity(doShare());
return true;
}
return super.onOptionsItemSelected(item);
}
public Intent doShare() {
Intent intent = new Intent(Intent.ACTION_SEND);
TextView textView = findViewById(R.id.res);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, textView.getText().toString());
return intent;
}