2016-03-14 39 views
2

在我的Activity中是一個按鈕,它填充了一個數據庫。我的方式是一個actionBar項目,它們是一樣的。我不明白我的問題是什麼。 什麼是ActionBar中一個saveItem不用其他的Buttonandroid.support.v7.view.menu.ActionMenuItemView無法轉換爲android.widget.Button

public class ItemActivity extends AppCompatActivity { 

public static final String LOG_TAG = ItemActivity.class.getSimpleName(); 

private 
DeviceMemoSource dataSource; 
Button action_save; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_item); 
    action_save = (Button) findViewById(R.id.action_save); 


    Log.d(LOG_TAG, "Das Datenquellen-Objekt wird angelegt."); 
    dataSource = new DeviceMemoSource(this); 


} 

private void activateAddButton() { 

    Button buttonAddProduct = (Button) findViewById(R.id.action_save); 
    final EditText editText_Device_Number = (EditText) findViewById(R.id.editText_device_number); 
    final EditText editText_Device_Typ = (EditText) findViewById(R.id.editText_device_typ); 
    final EditText editText_Device_Date = (EditText) findViewById(R.id.editText_device_date); 
    final EditText editText_Device_Hits = (EditText) findViewById(R.id.editText_device_hits); 
    final EditText editText_Device_category = (EditText) findViewById(R.id.editText_device_category); 

    buttonAddProduct.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      String numberString = editText_Device_Number.getText().toString(); 
      String typ = editText_Device_Typ.getText().toString(); 
      String date = editText_Device_Date.getText().toString(); 
      String hits = editText_Device_Hits.getText().toString(); 
      String category = editText_Device_category.getText().toString(); 


      int number = Integer.parseInt(numberString); 
      editText_Device_Number.setText(""); 
      editText_Device_Typ.setText(""); 
      editText_Device_Date.setText(""); 
      editText_Device_Hits.setText(""); 
      editText_Device_category.setText(""); 

      dataSource.createDeviceMemo(typ, number, date, hits, category); 

      InputMethodManager inputMethodManager; 
      inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); 
      if (getCurrentFocus() != null) { 
       inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); 
      } 

      showAllListEntries(); 
     } 
    }); 
} 


private void showAllListEntries() { 
    List<DeviceMemo> deviceMemoList = dataSource.getAllDeviceMemos(); 

    ArrayAdapter<DeviceMemo> deviceMemoArrayAdapter = new ArrayAdapter<>(
      this, 
      android.R.layout.simple_list_item_multiple_choice, 
      deviceMemoList); 

    ListView deviceMemosListView = (ListView) findViewById(R.id.listview_device_memos); 
    deviceMemosListView.setAdapter(deviceMemoArrayAdapter); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_item, menu); 
    return true; 
} 


@Override 
protected void onResume() { 
    super.onResume(); 

    Log.d(LOG_TAG, "Die Datenquelle wird geöffnet."); 
    dataSource.open(); 


    Log.d(LOG_TAG, "Folgende Einträge sind in der Datenbank vorhanden:"); 
    showAllListEntries(); 

} 

@Override 
protected void onPause() { 
    super.onPause(); 

    Log.d(LOG_TAG, "Die Datenquelle wird geschlossen."); 
    dataSource.close(); 
} 


public boolean onOptionsItemSelected(MenuItem item) { 

    int id = item.getItemId(); 
    if (id == R.id.action_save) { 
     activateAddButton(); 
     return true; 
    } else if (id == R.id.about) { 
     Toast.makeText(getApplicationContext(), "aboutText", Toast.LENGTH_LONG).show(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 


@Override 
public void onStart() { 
    super.onStart(); 

} 

@Override 
public void onStop() { 
    super.onStop(); 

} 

}

和XML的最佳方式:

<?xml version="1.0" encoding="utf-8"?> 

<item 
    android:id="@+id/action_save" 
    android:orderInCategory="100" 
    android:title="@string/save" 
    android:icon="@android:drawable/ic_menu_save" 
    app:actionViewClass="android.widget.button" 
    app:showAsAction="always"/> 

<item 
    android:id="@+id/about" 
    android:orderInCategory="100" 
    android:title="@string/about" 
    app:showAsAction="never"/> 

回答

2

代替鄰f聲明並類型化爲Button,您可以使用View 您也可以將onClickListener添加到視圖。 只是這樣做:

View action_save = findViewById(R.id.action_save); 

View buttonAddProduct = findViewById(R.id.action_save); 

這可能不是最好的解決辦法,壽,但它應該工作,我不知道你action_save代表什麼。

+0

謝謝!這是解決我的問題:) – yopade

+0

接受關閉線程也許? :D – Vucko

+0

是的,可以關閉問題Thank's – yopade

相關問題