アプリケーションには単一のアクティビティ(MainActiviy.java)+フラグメントA、B、C、Dなどがあります。 Sun in Activity + application inフラグメントAをフラグメントBに変更したいのですが、シフトノブはフラグメントAにあります。これまでは、アクティビティボタンには常に使用していましたが、すべてが機能しました。しかし、フラグメントAに直接ボタンを持つフラグメントAとBとの間のやりとりは、どのようにわからないのですか?特に、バンドルを使用してAからBへputStringを送信します。フラグメントBのフラグメントAの変更。変更のボタンは含まれていませんフラグメントA
コードボタンフラグメントA
{
@Override
public void onItemClick(AdapterView<?> parent, final View view,
int position, long id) {
// getting values from selected ListItem
final String description = ((TextView) view.findViewById(R.id.mobile)).getText().toString();
final String id_stream = ((TextView) view.findViewById(R.id.id_streaming)).getText().toString();
// Starting single contact activity
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppCompatAlertDialogStyle);
builder.setTitle("Select");
// builder.setMessage("Lorem ipsum dolor ....");
builder.setItems(new CharSequence[]
{getString(R.string.play_video), getString(R.string.remove_video)},
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// The 'which' argument contains the index position
// of the selected item
switch (which) {
case 0:
TorrentPlayerFragmentRemote fragment6 = new TorrentPlayerFragmentRemote();
Bundle bundle = new Bundle();
bundle.putString("url", description);
fragment6.setArguments(bundle);
fragment6.onDestroyView();
FragmentTransaction fragmentTransaction6 = getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransaction6.addToBackStack(null);
getFragmentManager().popBackStack();
fragmentTransaction6.remove(fragment6);
fragmentTransaction6.replace(R.id.frame,fragment6);
fragmentTransaction6.commit();
break;
case 1:
// Snack Bar
Snackbar bar = Snackbar.make(view, R.string.confirm_delete_playlist, Snackbar.LENGTH_LONG)
.setAction(R.string.yes, new View.OnClickListener() {
@Override
public void onClick(View v) {
// ---Control remote api---
new Thread() {
public void run() {
try {
HttpURLConnection.setFollowRedirects(false);
// note : you may also need
//HttpURLConnection.setInstanceFollowRedirects(false)
HttpURLConnection con = (HttpURLConnection) new URL("http://dddd.ddd/remote/1.php?id="+id_stream).openConnection();
con.setRequestMethod("HEAD");
if(con.getResponseCode() == HttpURLConnection.HTTP_OK) {
//--refresh fragment
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.detach(playlist_torrent.this).attach(playlist_torrent.this).commit();
//Fin refresh fragment
// startActivity(getIntent());
// finish();
/* final Handler handler = new Handler();
Runnable refresh = new Runnable() {
@Override
public void run() {
new onPreExecute().execute();
handler.postDelayed(this, 60 * 1000);
}
};
handler.postDelayed(refresh, 60 * 1000); */
}
else{
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}.start();
// ----fin Control remote api----
}
});
bar.show();
break;
}
}
});
builder.create().show();
}
});
"フレーム" は、アクティビティの内部にあります。
変更を加えるためにMainActivity.javaを受け取るように変更する必要があると思います。
フラグメントAにボタンAを押し、フラグメントBを開きます。ボタンAはフラグメントAの内側にあります。 –
フラグメントAのボタンAを押すと、そのアクティビティにあるスイッチフラグメントメソッドを呼び出すことができます。アクティビティーは、作成時にフラグメントAに渡されたため、アクセスできます。 – BonBon
public void switchFragment()これをアクティビティのフラグメントAに入れます。プライベートなMain2Activityアクティビティを挿入します。これを呼び出すと:activity.switchFragment(); ? –