フラグメント内のonClicklistenerにいくつか問題があります。ボタンをクリックしても何も起こりません。 LogcatのonClicklistenerからメッセージが表示されず、Toastも画面に表示されませんが、コードにエラーが見つかりません。何か案は?
助けていただければ幸いです!どうもありがとう!そして私の悪い英語でごめんなさい
import Android.app.Fragment;
import Android.os.Bundle;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.View.OnClickListener;
import Android.view.ViewGroup;
import Android.widget.EditText;
import Android.widget.Button;
import Android.widget.Toast;
import Android.util.Log;
public class InputFragment extends Fragment
{
EditText input_text;
String text;
Button translate_button;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View InputFragmentView = inflater.inflate(R.layout.input_fgmt, container, false);
input_text = (EditText) InputFragmentView.findViewById(R.id.input_field);
translate_button = (Button) InputFragmentView.findViewById(R.id.translate);
translate_button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View view)
{
Log.d("Test", "onClickListener ist gestartet");
Toast.makeText(getActivity().getApplicationContext(), "Test", Toast.LENGTH_LONG).show();
saveInString();
}
});
return inflater.inflate(R.layout.input_fgmt, container, false);
}
public void saveInString()
{
if(text.equals(null))
{
Toast.makeText(getActivity().getApplicationContext(), "Das Feld ist leer!", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getActivity().getApplicationContext(), "Speichern...", Toast.LENGTH_LONG).show();
text = input_text.getText().toString();
Toast.makeText(getActivity().getApplicationContext(), "Fertig", Toast.LENGTH_SHORT).show();
}
}
}
私はあなたのコードに問題があると思います
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
.....
....
//problem is here below line
return inflater.inflate(R.layout.input_fgmt, container, false);
}
すでに膨らんだビューを返します
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View inputFragmentView = inflater.inflate(R.layout.input_fgmt, container, false);
.....
....
return inputFragmentView;
}
変化する
return inflater.inflate(R.layout.input_fgmt, container, false);
に
return InputFragmentView ;
また、これで変更します。
translate_button.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
Log.d("Test", "onClickListener ist gestartet");
Toast.makeText(getActivity().getApplicationContext(), "Test", Toast.LENGTH_LONG).show();
saveInString();
}
});
そしてimport Android.view.View;としてインポートします
コードにこの変更を加えますか
クラス定義について:
public class InputFragment extends Fragment implements View.OnClickListener
setOnClickListenerの呼び出し時:
translate_button.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View InputFragmentView)
{
Log.d("Test", "onClickListener ist gestartet");
Toast.makeText(getActivity().getApplicationContext(), "Test", Toast.LENGTH_LONG).show();
saveInString();
}
});
すべてのビューを作成するための最良の方法は、メソッドを再定義する必要があります。
@Override
public void onActivityCreated(Bundle saved) {
super.onActivityCreated(saved);
input_text = (EditText) InputFragmentView.findViewById(R.id.input_field);
translate_button = (Button) InputFragmentView.findViewById(R.id.translate);
translate_button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View view)
{
Log.d("Test", "onClickListener ist gestartet");
Toast.makeText(getActivity().getApplicationContext(), "Test", Toast.LENGTH_LONG).show();
saveInString();
}
});
このメソッドは、すべてのビューが作成された後に呼び出されるためです。 Fragmentのライフサイクルを読む必要があります。
setOnItemClickListener
は、setOnClickListener
の代わりにフラグメントを使用して動作します