2015年8月31日 星期一

【Android】Fragment 呼叫 Fragment


Bundle arguments = new Bundle();
int menuIndex = 1;
arguments.putInt("expand_menu_type", menuIndex);
BFragment fragment = new BFragment();
fragment.setArguments(arguments);
getFragmentManager().beginTransaction().replace(R.id.expand_menu, fragment, BFragment.class.getName()).addToBackStack(BFragment.class.getName()).commitAllowingStateLoss();

//點擊widget id R.id.expand_menu
//欲前往Fragment BFragment
//Class Name為BFragment.class.getName()
//

2015年8月30日 星期日

【Android】implements OnItemClickListener 的class 取得activity

class xxx extends Fragment implements OnItemClickListener

【情境1】切換activity
Intent intent = new Intent(this, ooo.class);←false
Intent intent = new Intent(getActivity(), ooo.class);←true

【情境2】show dialog
↓false
new AlertDialog.Builder(this).setTitle("")
      .setMessage(R.string.nonetworkalert)
      .setCancelable(false)
      .setPositiveButton(R.string.sure,
         new DialogInterface.OnClickListener()
         {
             public void onClick(DialogInterface dialoginterface, int i)
             { 
             }
         }
      ).show();

↓true
new AlertDialog.Builder(getActivity()).setTitle("")
      .setMessage(R.string.nonetworkalert)
      .setCancelable(false)
      .setPositiveButton(R.string.sure,
         new DialogInterface.OnClickListener()
         {
             public void onClick(DialogInterface dialoginterface, int i)
             { 
             }
         }
      ).show();


2015年8月29日 星期六

【Android】onKeyDown = 返回上一頁


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
     backButton(findViewById(R.id.imageButton1));
        return false;
    }
    return false;
}

        public void backButton(View v)
{
  Intent intent = new Intent();
  intent.setClass(this, xxx.class);
  Bundle bundle = new Bundle();
  bundle.putString("maptype",maptype);
  intent.putExtras(bundle);
  startActivity(intent);
  finish();
}

2015年8月28日 星期五

【Android】Bundle/Intent 返回正確的上一頁


<方法一>
<page 1>
Intent intent = new Intent(this, xxx.class);
intent.putExtra("back_class", this.getClass().getName());
startActivity(intent);
======================================================================================
<page2>
String clazz = getIntent().getStringExtra("back_class");

<方法二>
<page 1>
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("header_title", getString(R.string.transaction));
bundle.putInt("header_background_color", getResources().getColor(R.color.main_func));
bundle.putString("header_back_to", "Submenu_pageA");
intentMenuItem.setClass(Submenu_pageA.this,Submenu_pageB.class);
intentMenuItem.putExtras(bundle);
startActivity(intentMenuItem);
======================================================================================
<page 2>
Bundle bundle = null;
public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
bundle = this.getIntent().getExtras();
if(bundle.containsKey("header_back_to") && bundle.getString("header_back_to").equals("Submenu_pageA")){
  setReturnClass(Submenu_pageA.class);
}else{
  setReturnClass(HomeActivity.class);
}
}

2015年8月27日 星期四

【Android】若API回傳沒此欄位也不會exception


//若回傳沒此欄位也不會exception
JSONArray ary = (result.has("po_rec_cur")) ? result.getJSONArray("po_rec_cur") : null;
int length = (ary != null) ? ary.length() : 0;
for (int i = 0; i < length; i++) {
    JSONObject obj = ary.getJSONObject(i);
    SomeClass item = new SomeClass();
    //若回傳沒此欄位也不會exception
    item.buy_time = obj.has("buy_time") ? obj.getString("buy_time") : "";
}