Wie Rufen Sie die Methode innerhalb des fragment von Aktivitäten, wo-fragment dynamisch erstellt
Ich bin erstellen des fragments dynamisch ohne xml-Datei möchte ich nun rufen Sie die Methode innerhalb der fragement aus übergeordneten Aktivität also, wie kann ich es tun, kann jeder Körper wissen es , ich habe viele Frage, aber Sie tun mit xml
Fragmentactivity
public class HomeActivity extends FragmentActivity implements OnClickListener {
public static final String TAG = HomeActivity.class.getSimpleName();
PageIndicator mIndicator;
//Spinner spinner1;
ImageView serversetting,dropdown;
TextView selectrange;
int num,counter=0;
String url,apiUser,apipass,TestAccount;
/* public static HomeActivity newInstance() {
return new HomeActivity();
}*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_parent);
ViewPager mViewPager = (ViewPager) findViewById(R.id.viewpager);
selectrange=(TextView)findViewById(R.id.selectrange);
serversetting=(ImageView)findViewById(R.id.settingsserver);
dropdown=(ImageView)findViewById(R.id.dropdown);
mViewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
mIndicator = (CirclePageIndicator)findViewById(R.id.indicator);
mIndicator.setViewPager(mViewPager);
selectrange.setOnClickListener(this);
dropdown.setOnClickListener(this);
serversetting.setOnClickListener(this);
/*spinner1 = (Spinner) findViewById(R.id.spinner1);
List<String> list = new ArrayList<String>();
list.add("Current Month");
list.add("Last Month");
list.add("Last 5 Days");
list.add("Last 10 Days");
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
R.layout.spinner_layout,R.id.spinnerTarget,list);
//dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
serversetting.setOnClickListener(this);
spinner1.setAdapter(dataAdapter);
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos,
long id) {
//TODO Auto-generated method stub
Toast.makeText(parent.getContext(),
"OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(),
Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
//TODO Auto-generated method stub
}
});*/
}
public class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 3;
}
@Override
public Fragment getItem(int position) {
/* Bundle args = new Bundle();
args.putInt(TextViewFragment.POSITION_KEY, position);
return TextViewFragment.newInstance(args);*/
Fragment f=new Fragment();
switch(position) {
case 0:
f= new SalesGraphFragment();
break;
case 1:
f=new OrderGraphFragment();
break;
case 2:
f=new UserGraphFragment();
break;
}
return f;
}
/*@Override
public CharSequence getPageTitle(int position) {
return "Fragment # " + position;
}*/
}
@Override
protected void onStart()
{
super.onStart();
EasyTracker.getInstance().activityStart(this);
}
@Override
protected void onStop()
{
super.onStop();
EasyTracker.getInstance().activityStop(this);
}
void SelectRangeDialog()
{
final CharSequence[] list = {"All time","Current Month","Last Month","Today","YesterDay"};
AlertDialog.Builder alert = new AlertDialog.Builder(HomeActivity.this);
if(counter==0)
{
num=1;
counter++;
}
alert.setTitle("Range");
alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//TODO Auto-generated method stub
dialog.dismiss();
//selectrange.setText(list[which]);
// new ChangeStatusAsync().execute();
}
});
/*if(status.equals("Order Pending"))
num=0;
else if(status.equals("Upfront Received"))
num=1;
else if(status.equals("Payment Complete"))
num=2;*/
alert.setSingleChoiceItems(list,num, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
//newstatus=list[which].toString();
selectrange.setText(list[which]);
num=which;
}
});
alert.show();
}
@Override
public void onClick(View v) {
//TODO Auto-generated method stub
switch (v.getId()) {
case R.id.settingsserver:
Intent settings=new Intent(HomeActivity.this,SettingsActivity.class);
startActivity(settings);
break;
case R.id.selectrange:
SelectRangeDialog();
break;
case R.id.dropdown:
SelectRangeDialog();
break;
default:
break;
}
}
}
Fragment
public class SalesGraphFragment extends Fragment {
public static final String POSITION_KEY = "com.burnside.embeddedfragmenttest.POSITION";
public static final String TITLE_KEY = "com.burnside.embeddedfragmenttest.TITLE";
Object saleData[];
String strSales="";
TextView txt;
public Object b;
List array;
public Object [] objects;
public static SalesGraphFragment INSTANCE;
LinearLayout layout;
String sessionId,url,amount,apiUser,apipass,TestAccount;
MagentoStoreLogin sales=new MagentoStoreLogin();
public ProgressDialog order_dialog;
public static SalesGraphFragment newInstance(Bundle args) {
SalesGraphFragment fragment = new SalesGraphFragment();
fragment.setArguments(args);
ProgressDialog order_dialog;
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try{
TestAccount=getActivity().getIntent().getExtras().getString("TestAccount");
if(TestAccount==null)
TestAccount="";
if(TestAccount.equals("TestAccount"))
{
url =getActivity().getIntent().getExtras().getString("defaulturl");
apiUser=getActivity().getIntent().getExtras().getString("defaultapiuser");
apipass=getActivity().getIntent().getExtras().getString("defaultapipass");
System.out.println(url + apipass + apiUser);
}
else
{
url=PreferenceConnector.readString(getActivity(),PreferenceConnector.URL, null);
System.out.println("URL is:"+url);
apiUser=PreferenceConnector.readString(getActivity(),PreferenceConnector.APIUSER, null);
apipass=PreferenceConnector.readString(getActivity(),PreferenceConnector.APIPASS, null);
new saleDetail().execute();
new GraphValue().execute();
System.out.println(url + apipass + apiUser);
}
if(url!=null&&url!="")
{
//Load the first 12 items
// counter=0;
}
else
{
Toast.makeText(getActivity(),"Please do the API settings first", 1).show();
}
}
catch(Exception e)
{
Toast.makeText(getActivity(),"Please do the settings first Exception", 1).show();
// uName.setText("");
// password.setText("");
}
}
public static SalesGraphFragment getSaleInstance()
{
return INSTANCE;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setHasOptionsMenu(true);
return inflater.inflate(R.layout.sales_fragment, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
if(!TestAccount.equals("TestAccount"))
{
GraphViewSeries exampleSeries = new GraphViewSeries(new GraphViewData[] {
new GraphViewData(5, 2.0d)
, new GraphViewData(4, 1.0d)
, new GraphViewData(3, 3.0d) //another frequency
, new GraphViewData(2, 2.0d)
, new GraphViewData(1, 1.0d)
, new GraphViewData(0, 6.0d)
});
//graph with dynamically genereated horizontal and vertical labels
GraphView graphView;
graphView = new LineGraphView(
getActivity() //context
, "" //heading
);
graphView.addSeries(exampleSeries); //data
// LinearLayout layout = (LinearLayout) findViewById(R.id.graph1);
// layout.addView(graphView);
//graph with custom labels and drawBackground
((LineGraphView) graphView).setDrawBackground(true);
//custom static labels
// graphView.setHorizontalLabels(new String[] {"2 days ago", "yesterday", "today", "tomorrow"});
// graphView.setVerticalLabels(new String[] {"high", "middle", "low"});
//graphView.addSeries(exampleSeries); //data
//graphView.setViewPort(2, 5);
//graphView.setBackgroundColor(Color.WHITE);
// graphView.set
layout = (LinearLayout) view.findViewById(R.id.salesgraph);
txt=(TextView) view.findViewById(R.id.salesamount);
txt.setText(getData());
layout.addView(graphView);
}
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
//TODO Add your menu entries here
inflater.inflate(R.menu.optionmenus, menu);
super.onCreateOptionsMenu(menu, inflater);
}
//Handle click events
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.aboutus:
Intent aboutus=new Intent(getActivity(),AboutUs.class);
startActivity(aboutus);
return true;
case R.id.settings:
Intent settings=new Intent(getActivity(),SettingsActivity.class);
startActivity(settings);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public String getData()
{
return strSales;
}
public void setSessionId(String sessionId)
{
this.sessionId=sessionId;
}
public class saleDetail extends AsyncTask<Void,Integer,Object>
{
ProgressBar progressBar;
@Override
protected Object doInBackground(Void... params) {
try
{ if(sessionId==null)
{
sessionId=sales.login(url, apiUser, apipass);
setSessionId(sessionId);
}
b=sales. getSaleInfo(sessionId,url);
} catch (Exception e) {
e.printStackTrace();
System.out.println("Getting Order Error:"+e.getMessage());
//customer_results=null;
}
//}
return b;
}
@Override
protected void onPreExecute()
{
order_dialog = ProgressDialog.show(getActivity(),"Getting Sales Information...", "Please wait while loading", true);
}
protected void onPostExecute(final Object object)
{
order_dialog.dismiss();
if(object!=null)
{
System.out.println("Dismiss Called");
Map<String, Double> mappedData=(Map)object;
Double sales=mappedData.get("Total Sale");
double finalValue = Math.round( sales * 100.0 ) / 100.0;
strSales=""+finalValue;
txt.setText(finalValue+"");
//setData(object);
}
else
{
Toast.makeText(getActivity(),"You Dont have our package", 10).show();
}
}
}
public class GraphValue extends AsyncTask<Void,Integer,Object[]>
{
ProgressBar progressBar;
@Override
protected Object[] doInBackground(Void... params) {
try
{ if(sessionId==null)
{
sessionId=sales.login(url, apiUser, apipass);
setSessionId(sessionId);
}
objects=sales.getGraphValue(sessionId,url);
} catch (Exception e) {
e.printStackTrace();
System.out.println("Getting Order Error:"+e.getMessage());
//customer_results=null;
}
//}
return objects;
}
@Override
protected void onPreExecute()
{
// order_dialog = ProgressDialog.show(getActivity(),"Getting Sales Information...", "Please wait while loading", true);
}
protected void onPostExecute(final Object object[])
{
// order_dialog.dismiss();
// System.out.println("Data length is:"+object.length);
//System.out.println("Dismiss Called");
for(Object obj:object)
{
extractDate(obj);
}
}
private void extractDate(Object obj) {
//TODO Auto-generated method stub
Map map=(Map)obj;
System.out.println(map.get("getCreatedAt"));
}
}
}
bitte fügen Sie code..du prob müssen, verwenden Sie einen listener für die Kommunikation zwischen activity-und fragment, aber den code sehen.
aktuelle code-Beispiel? nicht FragmentManager Holen Sie sich Ihr fragment durch id oder tag?
ja, aber die richtige Art und Weise ist einfach nicht cast, und rufen es aber zu nutzen, Schnittstellen zu de-paar, das fragment aus der Tätigkeit..
ich habe code Hinzugefügt
aktuelle code-Beispiel? nicht FragmentManager Holen Sie sich Ihr fragment durch id oder tag?
ja, aber die richtige Art und Weise ist einfach nicht cast, und rufen es aber zu nutzen, Schnittstellen zu de-paar, das fragment aus der Tätigkeit..
ich habe code Hinzugefügt
InformationsquelleAutor UnderGround | 2013-06-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde erstellen Sie eine neue abstrakte Klasse, die Sie erweitert Fragment.
SalesGraphFragment, OrderGraphFragment und UserGraphFragment erweitern würde diese neue Klasse und würden Sie implementieren die Methode, die Sie aufrufen wollen, aus der Aktivität.
Aus der Tätigkeit, Sie können diese Methode aufrufen, in dieser Weise :
InformationsquelleAutor Alex248
SalesGraphFragment
erstrecktFragment
Recht? MachenFragment fragment
ist die gleicheFragment
Klasse, da es 2:android.support.v4.app.Fragment
undandroid.app.Fragment
. Sie müssen die gleiche, die Sie verwendet inpublic class SalesGraphFragment extends Fragment
ja ich Wechsel zu android.Unterstützung.v4.app.Fragment, beide aber noch immer Fehler
Auch inkompatible Typen bedeutet nur, dass Ihr SalesGraphFragment irgendwie nicht Erben aus dem Fragment in Ihrem
instanceof
Linie. Fix, und es wird funktionieren. (stackoverflow.com/questions/2551337/...)android.Unterstützung.v4.app.Fragment fragment =getFragmentManager().findFragmentById(R. id.salesgraph); ich bekomme diesen Fehler hier
InformationsquelleAutor Ken Wolf
Wenn überhaupt, Sie sind mit ViewPager zu Rendern, das fragment verwenden Sie diesen code in Ihre übergeordnete Aktivität.
Schließlich, diese Antwort mein Problem gelöst.
Sie sir, gespeichert, eine Hölle-Belastung von Arbeit für mich. Gottes Segen ich cam auf diesen Beitrag.
InformationsquelleAutor Naveen T P
nun, in einigen Fällen, im besonderen wenn definiert mit XML... dann wäre dies:
InformationsquelleAutor Miguel