ボタンクリックでアクティビティから現在ロードされているフラグメントにデータを渡したかったのです。 私はInterfaceを作成し、アクティビティに定義してインターフェイスに実装しましたが、フラグメントでレスポンスを取得できませんでした。アクティビティがアクティビティから現在ロードされているフラグメントに変換されていません
アクティビティでボタンが発火するたびに出力が必要です。
ここに私のコードです。これを解決するために私を助けてください。
intefaceを
public interface Click {
void onClick(String msg);
}
メインActvity
public class MainActivity extends FragmentActivity {
DrawerLayout dlMain;
Button btnClick;
Click click;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentOne fragmentOne = new FragmentOne();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.flContainer, fragmentOne,"FragmentOne");
ft.commit();
click = (Click) getSupportFragmentManager().findFragmentByTag("FragmentOne").;
dlMain = (DrawerLayout) findViewById(R.id.dlMain);
btnClick = (Button) findViewById(R.id.btnClick);
btnClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("Btn Click", "click");
click.onClick("Button Clicked!");
}
});
}
}
FragmentOne
public class FragmentOne extends Fragment implements Click {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_one, container, false);
return view;
}
@Override
public void onClick(String msg) {
Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show();
}
}
しかし、そこに私は、これが私のエラーログですMainActivity でエラーを取得しています。
05-09 10:30:49.092 19101から19101/com.psk.interfacetest E/BTNクリック:30:05-09 10をクリック49.095 19101から19101/com.psk.interfacetest E/AndroidRuntime:致命的な例外:メイン プロセス:com.psk.interfacetest、PID:com.psk.interfacetest.MainActivity $ 1.onClick(MainActivity.java:37)で19101 java.lang.NullPointerExceptionが android.view.Viewで.performClick(View.java:4471) android.view.View $ PerformClick.run(View.java:18778) (android.os.Handler.handleCallback(H andler.java:808) (android.os.Handler.dispatchMessage(Handler.java:103) (android.os.Looper.loop(Looper.java:193) )でアンドロイド.app.ActivityThread.main(ActivityThread。 java:5345) at java.lang.reflect.Method.invokeNative(ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller dalvik.system.NativeStart.mainでcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) で.RUN(ZygoteInit.java:824) (ネイティブメソッド)
おかげで...素晴らしい仕事..... – Rushvi