Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将模型类parcelable对象从片段传递到活动?_Java_Android_Android Fragments - Fatal编程技术网

Java 如何将模型类parcelable对象从片段传递到活动?

Java 如何将模型类parcelable对象从片段传递到活动?,java,android,android-fragments,Java,Android,Android Fragments,我想将Parcelable模型类对象从片段传递到活动。在片段中,我传入AsyncTaskpostExecute()方法。在活动中,我需要在listview中附加模型类对象dat。我试过使用arraylist和Serializableaslo,但它不起作用。请需要一个如何制作的建议 我的片段类: public class PlantPOSearch extends Fragment { Button go; PlantPOModel plantPOModel = new PlantPOModel

我想将
Parcelable
模型类对象从片段传递到活动。在片段中,我传入AsyncTask
postExecute()
方法。在活动中,我需要在listview中附加模型类对象dat。我试过使用arraylist和Serializableaslo,但它不起作用。请需要一个如何制作的建议

我的片段类:

public class PlantPOSearch extends Fragment {

Button go;
PlantPOModel plantPOModel = new PlantPOModel();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.plantpo_search, container, false);
    go = (Button) rootView.findViewById(R.id.ordergo);


    go.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            MyAsyncTask myAsyncTask = new MyAsyncTask();
            myAsyncTask.execute();
        }
    });
    return rootView;
}



class MyAsyncTask extends AsyncTask<String, String, String> {

    @Override
    protected void onPreExecute() {
    }

    protected String doInBackground(String... params)  {

        InputStream inputStream = null;
        HttpURLConnection urlConnection = null;
        String line = "", response = "";

     try
      {

          //int plantnum = Integer.parseInt(params[0]);

          String url1="http://192.168.1.5:8002/sap/opu/odata/sap/ZMM_PO_APP_SRV/POHeaderSet?$filter=Plant%20eq%20%271000%27";
          URL url = new URL(url1);
          String authorizationString = "Basic " + Base64.encodeToString(("abaper" + ":" + "erp@786").getBytes(), Base64.NO_WRAP);
          URL urlToken = new URL("http://192.168.1.5:8002/sap/opu/odata/sap/ZSALES_APP_SRV/");
          String token = new TokenGeneration().getToken(authorizationString, urlToken);

        urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setRequestProperty("Authorization", authorizationString);
        urlConnection.setRequestProperty("Content-Type", "application/json");
        urlConnection.setRequestProperty("Accept", "application/json");
        urlConnection.setRequestProperty("X-CSRF-Token", token);
        urlConnection.setRequestMethod("GET");

        Log.d("Token", token);
        int statusCode = urlConnection.getResponseCode();
        Log.d("Response code", "" + statusCode);

        if (statusCode == HttpsURLConnection.HTTP_OK) {
            inputStream = new BufferedInputStream(urlConnection.getInputStream());
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            while ((line = bufferedReader.readLine()) != null) {
                response += line;
            }

            if (null != inputStream) {
                inputStream.close();
            }
            Log.d("Plant Response", response);

        }

        Gson gson = new Gson();
          plantPOModel = gson.fromJson(response,PlantPOModel.class);
          Log.d("company code",plantPOModel.getD().getResults()[0].getCompanyCode());
           Log.d("Doc Number", plantPOModel.getD().getResults()[0].getPurchaseDocNo());


    } catch (Exception e) {
        e.printStackTrace();
    }

       return null;
    }

    @Override
    protected void onPostExecute(String result) {

        super.onPostExecute(result);
        try {

            Intent intent = new Intent(getActivity().getApplicationContext(), POList.class);


            ArrayList<PlantPOModel> arrayList = new ArrayList<>();
            arrayList.add(plantPOModel);
            intent.putParcelableArrayListExtra("Plant",arrayList);
            startActivity(intent);

        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

} 
}

我的活动课:

public class POList extends AppCompatActivity {

ArrayList<String> listItems = new ArrayList<String>();
ArrayAdapter<String> adapter;
private ListView listView;
POListAdapter poListAdapter;

POMaterialModel poMaterialModel;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.polist);




    ArrayList<PlantPOModel> arrayList = getIntent().getParcelableArrayListExtra("Plant");

    PlantPOModel plantPOModel = arrayList.get(0);

    try{
         Log.d("company code",plantPOModel.getD().getResults()[0].getCompanyCode());
    } catch (Exception e){
        e.printStackTrace();
    }

    listView = (ListView) findViewById(R.id.listView);

    listView.setTextFilterEnabled(true);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
            //startActivity(new Intent(POList.this,POListView.class));
        }
    });



}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.logout) {
        finish();
        startActivity(new Intent(this, Login.class));
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}
公共类POList扩展了AppCompative活动{
ArrayList listItems=新的ArrayList();
阵列适配器;
私有列表视图列表视图;
抛光机抛光机;
POMaterialModel POMaterialModel;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.polist);
ArrayList ArrayList=getIntent();
PlantPOModel PlantPOModel=arrayList.get(0);
试一试{
Log.d(“公司代码”,plantPOModel.getD().getResults()[0].getCompanyCode());
}捕获(例外e){
e、 printStackTrace();
}
listView=(listView)findViewById(R.id.listView);
setTextFilterEnabled(true);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//星触觉(新意图(POList.this,POListView.class));
}
});
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.menu,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
if(id==R.id.logout){
完成();
startActivity(新意图(this,Login.class));
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}

你有活动类的“arraylist”数据吗?我认为您获得了数据,但它在应用程序上不可见,因为您没有初始化将数据绑定到
列表视图的
适配器。请初始化适配器并将模式数据传递给适配器,然后将“setAdapter”传递给“listview”。希望它能帮上忙,山姆,我也试过了,但它不起作用。我使用Log.d();检查数据是否进入活动,但它进入活动。我想你是android的新手。请在
google
上搜索
listView
演示,它将帮助您阅读。这可能对你有帮助
public class POList extends AppCompatActivity {

ArrayList<String> listItems = new ArrayList<String>();
ArrayAdapter<String> adapter;
private ListView listView;
POListAdapter poListAdapter;

POMaterialModel poMaterialModel;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.polist);




    ArrayList<PlantPOModel> arrayList = getIntent().getParcelableArrayListExtra("Plant");

    PlantPOModel plantPOModel = arrayList.get(0);

    try{
         Log.d("company code",plantPOModel.getD().getResults()[0].getCompanyCode());
    } catch (Exception e){
        e.printStackTrace();
    }

    listView = (ListView) findViewById(R.id.listView);

    listView.setTextFilterEnabled(true);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
            //startActivity(new Intent(POList.this,POListView.class));
        }
    });



}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.logout) {
        finish();
        startActivity(new Intent(this, Login.class));
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}