ShareIntent 不会更新来自 textView 的值
ShareIntent won't update value from textView
我正在尝试编写一个使用滑动功能的应用程序。每次用户滑动 phone 时,都会生成一个随机数,该随机数用于获取数组 myNames[] 中的字符串值,并显示在 textView 上。我想使用线路或任何短信应用程序共享 textView 上显示的值。我的最终问题是:为什么 shareIntent 不识别 textView.getText().toString();并启用该字符串值的共享?几天来我一直在努力解决这个问题,但无法弄清楚为什么它不会在每次启动滑动时更新值。
public class MainActivity extends Activity {
float x1, x2;
float y1, y2;
SharedPreferences preferences;
ShareActionProvider provider;
TextView textView;
String z;
private ShareActionProvider mShareActionProvider;
final String myNames[] = {"1","2","3","4","5","6"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView1);
Typeface font = Typeface.createFromAsset(getAssets(),
"fonts/example.ttf");
textView.setTypeface(font);
}
public boolean onTouchEvent(MotionEvent touchevent) {
Random randGen = new Random();
int rando =randGen.nextInt(myNames.length);
switch (touchevent.getAction()) {
// when user first touches the screen we get x and y coordinate
case MotionEvent.ACTION_DOWN: {
x1 = touchevent.getX();
y1 = touchevent.getY();
break;
}
case MotionEvent.ACTION_UP: {
x2 = touchevent.getX();
y2 = touchevent.getY();
if (x1 < x2) {
textView.setText(myNames[rando]);
}
// if right to left sweep event on screen
if (x1 > x2) {
textView.setText(myNames[rando]);
}
}
}z=myNames[rando];
return false;
}
public boolean onCreateOptionsMenu(Menu menu) {
String y="yolo";
getMenuInflater().inflate(R.menu.main, menu);
MenuItem shareItem = (MenuItem) menu.findItem(R.id.action_share);
ShareActionProvider mShare = (ShareActionProvider) shareItem
.getActionProvider();
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, "text to sahre test: " + textView.getText().toString()
);
mShare.setShareIntent(shareIntent);
return true;
}
}
onCreateOptionsMenu()
仅运行一次 - 在最初创建菜单时。
您应该保存对 ShareActionProvider
的引用,并在每次 TextView
的文本更改时调用 setShareIntent()
(即,作为 ACTION_UP
的一部分) .
我正在尝试编写一个使用滑动功能的应用程序。每次用户滑动 phone 时,都会生成一个随机数,该随机数用于获取数组 myNames[] 中的字符串值,并显示在 textView 上。我想使用线路或任何短信应用程序共享 textView 上显示的值。我的最终问题是:为什么 shareIntent 不识别 textView.getText().toString();并启用该字符串值的共享?几天来我一直在努力解决这个问题,但无法弄清楚为什么它不会在每次启动滑动时更新值。
public class MainActivity extends Activity {
float x1, x2;
float y1, y2;
SharedPreferences preferences;
ShareActionProvider provider;
TextView textView;
String z;
private ShareActionProvider mShareActionProvider;
final String myNames[] = {"1","2","3","4","5","6"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView1);
Typeface font = Typeface.createFromAsset(getAssets(),
"fonts/example.ttf");
textView.setTypeface(font);
}
public boolean onTouchEvent(MotionEvent touchevent) {
Random randGen = new Random();
int rando =randGen.nextInt(myNames.length);
switch (touchevent.getAction()) {
// when user first touches the screen we get x and y coordinate
case MotionEvent.ACTION_DOWN: {
x1 = touchevent.getX();
y1 = touchevent.getY();
break;
}
case MotionEvent.ACTION_UP: {
x2 = touchevent.getX();
y2 = touchevent.getY();
if (x1 < x2) {
textView.setText(myNames[rando]);
}
// if right to left sweep event on screen
if (x1 > x2) {
textView.setText(myNames[rando]);
}
}
}z=myNames[rando];
return false;
}
public boolean onCreateOptionsMenu(Menu menu) {
String y="yolo";
getMenuInflater().inflate(R.menu.main, menu);
MenuItem shareItem = (MenuItem) menu.findItem(R.id.action_share);
ShareActionProvider mShare = (ShareActionProvider) shareItem
.getActionProvider();
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, "text to sahre test: " + textView.getText().toString()
);
mShare.setShareIntent(shareIntent);
return true;
}
}
onCreateOptionsMenu()
仅运行一次 - 在最初创建菜单时。
您应该保存对 ShareActionProvider
的引用,并在每次 TextView
的文本更改时调用 setShareIntent()
(即,作为 ACTION_UP
的一部分) .