2016-03-27 46 views
-1

我想在我的Android項目上做一些簡單的SQLite工作。 (this,null, null,null 1) MyDBHandler中的MyDBHandler()行不能應用於此。 我有一種感覺,這是因爲這是一個片段,而不是通常的活動。有任何想法嗎?SQLite上的一個片段

package com.test.test.sql; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 


/** 
* A simple {@link Fragment} subclass. 
*/ 
public class MemoFragment extends Fragment { 

    EditText Input; 
    TextView LyricText; 
    MyDBHandler dbHandler; 
    Button addButtonClicked; 
    Button deleteButtonClicked; 

    public MemoFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_memo, container, false); 

     Input = (EditText) getView().findViewById(R.id.Input); 
     LyricText = (TextView) getView().findViewById (R.id.LyricText); 
     dbHandler = new MyDBHandler(this, null, null, 1); 
     printDatabase(); 
    } 
    //add lyric to database 
    public void addButtonClicked(View view){ 
     Lyrics lyrics = new Lyrics(Input.getText().toString()); 
     dbHandler.addLyric(lyrics); 
     printDatabase(); 
    } 

    //delete items 
    public void deleteButtonClicked(View view){ 
     String inputText = Input.getText().toString()); 
     dbHandler.deleteLyrics(inputText); 
     printDatabase(); 
    } 

    public void printDatabase(){ 
     String dbString = dbHandler.databasetoString(); 
     LyricText.setText(dbString); 
     Input.setText(""); 
    } 

} 
+0

哪裏是'addLyrics()'定義的方法? –

+0

@BobMalooga它在MyDBHandler中定義。我修正了這個錯誤,它需要'addLyric()'而不是'addLyrics()'我覺得主要的問題是'findViewById'似乎不能在一個片段中工作 – DinoArmadillo

+0

你的錯誤與'findViewById()'無關。 。在碎片內完美運作。 –

回答

1

這樣如何驗證碼:

dbHandler = new MyDBHandler(getActivity(),null,null,1); 
+0

似乎已經做到了謝謝幫助 – DinoArmadillo

1

您的onCreateView錯誤。當你將回報放在那個位置時,下面的行不會被執行。所以,首先將膨脹的佈局放在View變量上。然後用它來實例化edittext和textview。見下文

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View v = inflater.inflate(R.layout.fragment_memo, container, false); 

    Input = (EditText) v.findViewById(R.id.Input); 
    LyricText = (TextView) v.findViewById (R.id.LyricText); 
    dbHandler = new MyDBHandler(this, null, null, 1); 
    printDatabase(); 
    return v; 
} 
+0

謝謝,即時通訊仍然遇到'dbHandler = new MyDBHandler(this,null,null,1)錯誤;'日誌說錯誤:不兼容的類型:MemoFragment不能轉換爲上下文' – DinoArmadillo