Skip to content

Instantly share code, notes, and snippets.

@esperia
Created August 28, 2012 03:57
Show Gist options
  • Save esperia/3494826 to your computer and use it in GitHub Desktop.
Save esperia/3494826 to your computer and use it in GitHub Desktop.
Activityに依存しないようにFragment->Activityへ通知をする
package com.esperia09.android.test_fragment;
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.Button;
public class InterfaceFragment extends Fragment {
public static final String KEY_LEVEL = "level";
public static InterfaceFragment newInstance(int level) {
InterfaceFragment frg = new InterfaceFragment();
Bundle args = new Bundle();
args.putInt(KEY_LEVEL, level);
frg.setArguments(args);
return frg;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Button button = new Button(getActivity());
button.setText(String.valueOf(getArguments().getInt(KEY_LEVEL)));
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (getActivity() instanceof OnClickBtnListener) {
OnClickBtnListener l = (OnClickBtnListener) getActivity();
l.onClickBtn("hogehoge");
}
}
});
return button;
}
public interface OnClickBtnListener {
public void onClickBtn(String msg);
}
}
package com.esperia09.android.test_fragment;
import android.app.Activity;
import android.app.FragmentManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends Activity implements InterfaceFragment.OnClickBtnListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FragmentManager fm = getFragmentManager();
InterfaceFragment frg = (InterfaceFragment) fm.findFragmentById(android.R.id.content);
if (frg == null) {
frg = InterfaceFragment.newInstance(0);
fm.beginTransaction().add(android.R.id.content, frg).commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("stack");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if ("stack".equals(item.getTitle())) {
FragmentManager fm = getFragmentManager();
InterfaceFragment nowFrg = (InterfaceFragment) fm
.findFragmentById(android.R.id.content);
int level = nowFrg.getArguments().getInt(InterfaceFragment.KEY_LEVEL);
fm.beginTransaction()
.replace(android.R.id.content, InterfaceFragment.newInstance(++level))
.addToBackStack(null).commit();
}
return true;
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
@Override
public void onClickBtn(String msg) {
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
}
}
@esperia
Copy link
Author

esperia commented Aug 28, 2012

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment