我想通过点击按钮作为短信/社交媒体等发送从TextView对象中获取的数据。目前我只能发送一个静态字符串作为短信。
这是我目前发送数据的方法。
public class MainActivity extends FragmentActivity {
android.app.FragmentManager manager;
ViewPager viewpager;
@Override
protected void onCreate(Bundle savedInstanceState) {
TextView textView = (TextView) findViewById(R.id.textView1);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// instantiate TextView object
//TextView textViiew = (TextView) findViewById(R.id.textView1);
// initialize viewPager
viewpager = (ViewPager) findViewById(R.id.pager);
// create object of Adapter class
PagerAdapter padapter = new org.example.androidsdk.demo.PagerAdapter(getSupportFragmentManager());
viewpager.setAdapter(padapter);
manager = getFragmentManager();
}
public void slideBack() {
Fragment f1 = new Fragment();
android.app.FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.pager, f1, "X");
// addToBackStack here
transaction.addToBackStack(null);
transaction.commit();
}
public void implicitSendQuote(View v) {
String text = ((textView)v).getText().toString();
Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setAction(Intent.ACTION_SEND);
intent.putExtra("sms_body", "TEXT"); // - I want to add data from TextView here
// intent.putExtra(Intent.EXTRA_STREAM, R.id.textView1);
// intent.putExtra("sms_body", R.id.textView1);
// intent.putExtra(Intent.EXTRA_STREAM, R.layout.fragment_one_layout);
intent.setType("*/*");
startActivity(intent);
}
答案 0 :(得分:1)
implicitSendQuote
将传递给按钮的视图,该按钮将其称为onClick上定义的XML。要从TextView获取文本,您可能希望在onCreate()中找到textView时使textView成为成员变量而不是局部变量。然后,从你的onClick中获取文本,如下所示:
public class MainActivity extends FragmentActivity {
android.app.FragmentManager manager;
ViewPager viewpager;
TextView textView;//textView should be a member variable so you can access it later.
@Override
protected void onCreate(Bundle savedInstanceState) {
textView = (TextView) findViewById(R.id.textView1); //find textView
...
}
public void implicitSendQuote(View v) {
String text = textView.getText().toString(); //get value of textView when button is clicked.
...
intent.putExtra("sms_body", text);
...
}
然后,您可以通过getIntent().getStringExtra("sms_body");
顺便提一下,最好将此字符串键作为其中一个活动的静态成员,即:
public class NextActivity extends FragmentActivity {
public static final String SMS_BODY = "sms_body";
protected void onCreate(Bundle b) {
String text = getIntent().getStringExtra(SMS_BODY);
}
}
在onImplicitSendQuote:
intent.putExtra(NextActivity.SMS_BODY, text);
这样,您只在一个地方定义字符串,因此如果您稍后更改它,它将不会在活动之间变得不兼容。
答案 1 :(得分:0)
替换:
String text = textView.getText().toString();
使用:
String text = ((TextView)v).getText().toString());
<强>更新强>
问题是缺少演员。
通过ID获取TextView
:
String text = (String) ((TextView) getView().findViewById(R.id.yourTextView)).getText();
或@emersso说,使用属性存储您的文字TextView
答案 2 :(得分:0)
这一行试图将Button转换为TextView,这不是你想要的。
String text = ((textView)v).getText().toString();
将其更改为此,将按ID查找TextView,然后将文本作为字符串获取:
String text = ((TextView) findViewById(R.id.textView1)).getText().toString();
并将文字发送到您的意图:
intent.putExtra("sms_body", text);