2017-06-10 3 views
-1

私はグローバル変数を持っています。アプリの作業中に値が変更されます。共有ボタンがあり、それをタップすると、アプリの起動時に値だけを共有できます。私はshareIntentによって更新された値を送信したい。どうやってするの?共有インテントのデータを更新するには?

private int counter; 
... 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    counterTextView = (TextView) findViewById(R.id.counter_text_view); 
    counter++; 
    String counterStr = Integer.toString(counter); 
    counterTextView.setText(counterStr); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate menu resource file. 
    getMenuInflater().inflate(R.menu.main, menu); 

    // Locate MenuItem with ShareActionProvider 
    MenuItem item = menu.findItem(R.id.menu_item_share); 

    // Fetch and store ShareActionProvider 
    mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item); 
    setShareIntent(createShareIntent()); 

    // Return true to display menu 
    return true; 

} 

// Call to update the share intent 
private void setShareIntent(Intent shareIntent) { 
    if (mShareActionProvider != null) { 
     mShareActionProvider.setShareIntent(shareIntent); 
    } 
} 
private Intent createShareIntent() { 
    Intent shareIntent = new Intent(Intent.ACTION_SEND); 
    shareIntent.setType("text/plain"); 
    shareIntent.putExtra(Intent.EXTRA_TEXT, 
      counter); 
    return shareIntent; 
} 
+0

変数静的を作りますか? – Konrad

+0

申し訳ありませんが、動作しません。私はそれを試してみました... –

答えて

1

SharedPreferencesを使用すると、データを永続的に保存できます。

+0

私はSharedPreferencesでデータを保存します。私はcounterからshareIntentに更新された値を入れる必要がある! –

+0

それにコードを追加してください。本当に正確に何をしようとしているのか分かりません。カウンターを更新する場所は? – Konrad

+0

私はコードを追加しました。私はカウンタを更新しますが、共有の意図はカウンタ値を開始値から送信し、更新値ではありません。 –

0

Intentには、一定のテキスト文字列 "counter"を入れています。たぶん、代わりにこのような何かしてみてください:

shareIntent.putExtra("counter", counter); 

をし、それはこのようにアウト取り戻す:

int counter = getIntent().getIntExtra("counter", -1); 
if (counter != -1) { 
    // do stuff 
} 
関連する問題