2016-03-29 10 views
-1

Fragmentsを基礎として作成してアプリケーションを作成しようとしていますが、これらのフラグメントの1つでは、ユーザーがメモを追加できる基本的なSQLiteが必要です。 私は現在、リスナーをXMLではなくJavaに含めています。私は現在、次のエラーが発生しています。Android OnClickListenerエラー

C:\Users\Luke\AndroidStudioProjects\ShardswithFragments\app\src\main\java\com\test\test\app\MemoFragment.java 
Error:(43, 40) error: <identifier> expected 
Error:(43, 41) error: illegal start of type 
Error:(43, 44) error: ')' expected 
Error:(43, 49) error: ';' expected 
Error:(43, 50) error: invalid method declaration; return type required 
Error:(44, 9) error: illegal start of expression 
Error:(44, 16) error: illegal start of expression 
Error:(44, 28) error: ';' expected 
Error:(44, 35) error: ';' expected 
Error:(51, 43) error: <identifier> expected 
Error:(51, 44) error: illegal start of type 
Error:(51, 47) error: ')' expected 
Error:(51, 52) error: ';' expected 
Error:(51, 53) error: invalid method declaration; return type required 
Error:(52, 9) error: illegal start of expression 
Error:(52, 16) error: illegal start of expression 
Error:(52, 28) error: ';' expected 
Error:(52, 35) error: ';' expected 
Error:Execution failed for task ':app:compileDebugJavaWithJavac'. 
> Compilation failed; see the compiler error output for details. 

より多くの構文アルエラーと特定する記号(setOnClickListener)を解決できないことのようです。すべてのヘルプは、あなたがメソッドの範囲外の設定リスナーことはできません

package com.test.test.app; 
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; 
import android.view.View.OnClickListener; 

/** 
    * 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 
     View v = inflater.inflate(R.layout.fragment_memo, container, false); 

     Input = (EditText) v.findViewById(R.id.Input); 
     LyricText = (TextView) v.findViewById (R.id.LyricText); 
     addButtonClicked = (Button) v.findViewById(R.id.addButton); 
     deleteButtonClicked = (Button) v.findViewById(R.id.deleteButton); 
     dbHandler = new MyDBHandler(getActivity() ,null, null, 1); 
     printDatabase(); 
     return v; 

    } 
    //add to db 
    addButtonClicked.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Lyrics lyrics = new Lyrics(Input.getText().toString()); 
      dbHandler.addLyric(lyrics); 
      printDatabase(); 
     }}; 

    //delete from db 
    deleteButtonClicked.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v){ 
      String inputtext = Input.getText().toString(); 
      dbHandler.deleteLyrics(inputtext); 
      printDatabase(); 

     }}; 

    // printout entry 
    public void printDatabase(){ 
     String dbString = dbHandler.databaseToString(); 
     LyricText.setText(dbString); 
     Input.setText(""); 
    } 

} 
+1

を下回っています。あなたのsetOnClickListenerをonCreateView内に移動してください – Wukash

答えて

2

をいただければ幸いです、右のコードは、あなたが任意のメソッドの外クラスフィールドにリスナーを追加しようとしている

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 
    View v = inflater.inflate(R.layout.fragment_memo, container, false); 

    Input = (EditText) v.findViewById(R.id.Input); 
    LyricText = (TextView) v.findViewById (R.id.LyricText); 
    addButtonClicked = (Button) v.findViewById(R.id.addButton); 
    deleteButtonClicked = (Button) v.findViewById(R.id.deleteButton); 
    dbHandler = new MyDBHandler(getActivity() ,null, null, 1); 
    printDatabase(); 

    //add to db 
    addButtonClicked.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Lyrics lyrics = new Lyrics(Input.getText().toString()); 
      dbHandler.addLyric(lyrics); 
      printDatabase(); 
     } 
    }); 

    //delete from db 
    deleteButtonClicked.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v){ 
      String inputtext = Input.getText().toString(); 
      dbHandler.deleteLyrics(inputtext); 
      printDatabase(); 

     } 
    }); 

    return v; 
} 

// printout entry 
public void printDatabase(){ 
    String dbString = dbHandler.databaseToString(); 
    LyricText.setText(dbString); 
    Input.setText(""); 
} 

} 
+0

ありがとう、本当に感謝しています – DinoArmadillo