Java tutorial
package com.sanchez.fmf; import android.Manifest; import android.app.Dialog; import android.content.DialogInterface; import android.content.pm.PackageManager; import android.support.design.widget.Snackbar; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.os.Build; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.app.AppCompatDialogFragment; import android.support.v7.widget.Toolbar; import android.text.Html; import android.text.method.LinkMovementMethod; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.widget.TextView; import com.sanchez.fmf.event.PermissionResultEvent; import com.sanchez.fmf.fragment.MainFragment; import java.util.HashMap; import java.util.Map; import butterknife.Bind; import butterknife.ButterKnife; import de.greenrobot.event.EventBus; public class MainActivity extends AppCompatActivity { @Bind(R.id.toolbar_main_activity) Toolbar mToolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); setSupportActionBar(mToolbar); // color nav and status bar with app color Window w = getWindow(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { w.setNavigationBarColor(getResources().getColor(R.color.primary_dark)); } FragmentManager fm = getSupportFragmentManager(); Fragment mainFragment = fm.findFragmentById(R.id.container_main_activity); if (mainFragment == null) { mainFragment = MainFragment.newInstance(); fm.beginTransaction().add(R.id.container_main_activity, mainFragment).commit(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: return true; case R.id.action_about: AppCompatDialogFragment frag = new AboutDialogFragment(); frag.show(getSupportFragmentManager(), "dialog1"); return true; } return super.onOptionsItemSelected(item); } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case MainFragment.REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS: Map<String, Integer> perms = new HashMap<>(); // Initial state perms.put(Manifest.permission.ACCESS_COARSE_LOCATION, PackageManager.PERMISSION_GRANTED); perms.put(Manifest.permission.ACCESS_FINE_LOCATION, PackageManager.PERMISSION_GRANTED); for (int i = 0; i < permissions.length; i++) { perms.put(permissions[i], grantResults[i]); } if (perms.get(Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED && perms.get(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { EventBus.getDefault().post(new PermissionResultEvent(true)); } else { EventBus.getDefault().post(new PermissionResultEvent(false)); } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); } } public static class AboutDialogFragment extends AppCompatDialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { View dialogView = getActivity().getLayoutInflater().inflate(R.layout.dialog_about, null); TextView licenseText = (TextView) dialogView.findViewById(R.id.license); licenseText.setText(Html.fromHtml( "<a href=\"https://github.com/dakotasanchez/farmers-market-finder/blob/master/README.md#license\">LICENSE</a>")); licenseText.setMovementMethod(LinkMovementMethod.getInstance()); TextView sourceText = (TextView) dialogView.findViewById(R.id.source); sourceText.setText( Html.fromHtml("<a href=\"https://github.com/dakotasanchez/farmers-market-finder\">SOURCE</a>")); sourceText.setMovementMethod(LinkMovementMethod.getInstance()); return new AlertDialog.Builder(getActivity()).setTitle(R.string.about).setView(dialogView) .setPositiveButton(R.string.ok, null).create(); } } }