2013-10-07 46 views
0

因此,我被分配使用隱式意圖打開帶有「股票代碼」的瀏覽器。股票代碼只是網址的擴展,如下面的代碼所示。當我點擊一個按鈕輸入網址時,股票代碼將作爲共享首選項存儲並添加到選項菜單中。我可以訪問選項菜單並從菜單中打開一個URL,問題是如果我經常點擊菜單按鈕,它會添加menuItem,即使它已經存在。我嘗試使用包含方法,但它從來沒有出現錯誤,所以我必須錯誤地存儲首選項?任何幫助將是偉大的!使用選項菜單的共享首選項

package com.example.sharedpreferences; 


import android.app.Activity; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.EditText; 

public class MainActivity extends Activity { 

EditText edit; 
String StockTicker; 
SharedPreferences.Editor editor; 

public static String MY_PREFS = "edu.college.ece3233.my_prefs"; 
SharedPreferences prefs; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    edit= (EditText)findViewById(R.id.MyText); 
    prefs = getSharedPreferences(MY_PREFS, Activity.MODE_PRIVATE); 
    editor = prefs.edit(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    menu.clear(); 
    return true; 
} 

public void SharedPreferenceClick(View view){ 
    StockTicker=edit.getText().toString(); 
    Intent intent =new Intent(Intent.ACTION_VIEW,Uri.parse("http://finance.yahoo.com/q?s="+ StockTicker)); 
    startActivity(intent); 
    editor.putString("StockTick", StockTicker); 
    editor.commit(); 
} 

@Override 
public boolean onPrepareOptionsMenu(Menu menu){ 
    if(!prefs.contains(prefs.getString("StockTick", ""))) 
    menu.add(prefs.getString("StockTick", "")); 
    return super.onPrepareOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    Intent intent2 =new Intent(Intent.ACTION_VIEW,Uri.parse("http://finance.yahoo.com/q?s="+ item.toString())); 
    startActivity(intent2); 
    return super.onOptionsItemSelected(item); 
} 

} 

回答

0

而不是使用共享偏好的,使用重載constructor爲什麼不添加菜單,並提供項目ID。您可以使用方法findItem來確定是否添加菜單。如果找不到MenuItem,則此呼叫將返回null

+0

我會這樣做,但它是一個專注於共享首選項的學校作業。 – user1819301