Я пытаюсь понять значение этой строки:
activityCallback = (ToolbarListener) context
под выражением -
public class ToolbarFragment extends Fragment implements SeekBar.OnSeekBarChangeListener {
private static int seekValue = 10;
private static EditText editText;
ToolbarListener activityCallback;
public interface ToolbarListener {
public void onButtonClick (int position, String text);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {activityCallback = (ToolbarListener) context;}
catch (ClassCastException e) {
throw new ClassCastException(context.toString() + "must implement ToolBarListener");
}
}
Я понимаю, что ссылка на контекст (в данном случае Parent Activity) будет создана и сохранена в переменной actioncallback с использованием приведенного выше выражения.
Однако я не могу понять, как можно привести объект интерфейса.к деятельности (здесь контекст).
Я в состоянии понять другой код в полном объеме, и мой проект работает.Это проект, в котором родительское действие связывается с двумя фрагментами, используя интерфейс слушателя.
Я прикрепил java-файлы всего проекта на случай, если вы захотите просмотреть код.
С уважением, Рави.
----ToolbarFragment.java-----
package com.ebookfrenzy.fragmentexample;
import android.content.Context;
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.SeekBar;
public class ToolbarFragment extends Fragment implements SeekBar.OnSeekBarChangeListener {
private static int seekValue = 10;
private static EditText editText;
ToolbarListener activityCallback;
public interface ToolbarListener {
public void onButtonClick (int position, String text);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {activityCallback = (ToolbarListener) context;}
catch (ClassCastException e) {
throw new ClassCastException(context.toString() + "must implement ToolBarListener");
}
}
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
// inflate the layout for this fragment
View view = inflater.inflate(R.layout.toolbar_fragment, container,false);
editText = (EditText) view.findViewById(R.id.editText1);
final SeekBar seekBar = view.findViewById(R.id.seekBar1);
seekBar.setOnSeekBarChangeListener(this);
final Button button = view.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
buttonClicked(v);
}
});
return view;
}
private void buttonClicked(View v) {
activityCallback.onButtonClick(seekValue, editText.getText().toString());
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
seekValue = progress;
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
}
-----TextFragment.java----
package com.ebookfrenzy.fragmentexample;
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.TextView;
public class TextFragment extends Fragment {
private static TextView textView;
@Override
public View onCreateView(
LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
// inflate the layout for this fragment
View view = inflater.inflate(R.layout.text_fragment, container, false);
textView = (TextView)view.findViewById(R.id.textView1);
return view;
}
public void changeTextProperties (int fontSize, String text) {
textView.setTextSize(fontSize);
textView.setText(text);
}
}
----FragmentActivity.java----
package com.ebookfrenzy.fragmentexample;
import android.app.Activity;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class FragmentExampleActivity extends FragmentActivity
implements ToolbarFragment.ToolbarListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment_example);
}
@Override
public void onButtonClick(int fontSize, String text) {
TextFragment textFragment = (TextFragment)
getSupportFragmentManager().findFragmentById(R.id.text_fragment);
textFragment.changeTextProperties(fontSize, text);
}
}