【问题标题】:ShareIntent won't update value from textViewShareIntent 不会从 textView 更新值
【发布时间】:2015-04-12 02:13:08
【问题描述】:

我正在尝试编写一个使用滑动功能的应用程序。每次用户滑动手机时,都会生成一个随机数,该数用于获取数组myNames[]中的字符串值,并显示在textView上。我想使用 line 或任何文本消息应用程序共享 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;
}

}

【问题讨论】:

    标签: android random textview swipe


    【解决方案1】:

    onCreateOptionsMenu() 只运行一次 - 最初创建菜单时。

    您应该保存对您的ShareActionProvider 的引用,并在每次您的TextView 的文本更改时调用setShareIntent()(即,作为您ACTION_UP 的一部分)。

    【讨论】:

    • 我了解 onCreateOptionsMenu 以及它现在只运行一次的方式。我以为我理解对 ShareActionProvider 的引用并在 ACTION_UP 中调用 setShareIntent() 但我收到错误,现在我不确定如何完成。这符合应该做的事情吗? if (x1 &lt; x2) { textView.setText(myNames[rando]); mShare.setShareIntent(textView.getText().toString()); }
    • 您需要完成构建共享意图所需的所有行:基本上将您在 onCreateOptionsMenu 中的所有逻辑移到
    • 哇,非常感谢。它运作良好。只是出于好奇,这种特殊的滑动功能是否只允许随轨迹左右滑动?数字中的轨迹不只是出现,而是从 1 优雅地滑到 2?
    • 这绝对是一个不同的问题,但 TextView 没有改变文本更新方式的固有方法:它只是替换它。
    • 如果这有助于回答您的问题,请确保接受它以将其从未回答的问题列表中删除
    猜你喜欢
    • 1970-01-01
    • 2018-06-05
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    相关资源
    最近更新 更多