Ich habe eine Hauptaktivität, in der sich ein Fragment mit einer Bildansicht befindet. Wenn auf diese Bildansicht geklickt wird, wird eine neue Aktivität gestartet, die eine Listenansicht enthält. Ich möchte die Position (Index) zurückgeben, die der Benutzer auf diese Listenansicht klickt, zurück zum Fragment.Wie senden Sie Daten von einer Aktivität an ihr übergeordnetes Fragment?
Fragment-Code
package com.example.kedee.testgradle;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
/**
* A simple {@link Fragment} subclass.
*/
public class ASKFragment extends Fragment implements View.OnClickListener{
private Context context;
private View rootView;
private int pos;
public ASKFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
rootView= inflater.inflate(R.layout.fragment_ask, container, false);
context=inflater.getContext();
setListeners();
return rootView;
}
void setListeners(){
ImageView catIcon=(ImageView)rootView.findViewById(R.id.cat_icon);
catIcon.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int vID=v.getId();
if(vID==R.id.cat_icon){
Intent intent=new Intent(getActivity(),ASK.class);
getActivity().startActivity(intent);
}
}
}
Code of Aktivität, die von diesem Fragment genannt zu werden. (ASK Aktivität)
package com.example.kedee.testgradle;
import android.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class ASK extends AppCompatActivity {
private int index;
private String[] catNames= {"Acad","Emer","Tech","Exam","Station","Finance","Medical","Place","Sports" ,
"Others" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ask);
ListView listView=(ListView)findViewById(R.id.ask_cat_listView);
listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,catNames));
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView<?> listView, View v, int pos, long id){
index=pos;
//code to return back this index to the parent fragment?
}
});
}
}
Diese Position in sharePrafrences speichern. – HassanUsman
@HassanUsman NEIN! 'startActivityForResult' ist der geeignete Anwendungsfall hier –
Sie können startActivityfor Ergebnis verwenden –