获得额外的数据android,保持强制关闭应用程序

时间:2014-10-20 14:20:27

标签: android android-intent

这是我发送额外数据的方式

btn_category.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    WriteLog.d("ThangTB", "onclick image");
                    Intent i=new Intent(MainActivity.this,QuoteList.class);
                    i.putExtra("category", "ok");
                    MainActivity.this.startActivity(i);
                }
            });

并使用

接收数据
Intent intent = getIntent();

    //ambil data putextra variabel category dari intent     
    String category = intent.getStringExtra("category");
    //if category sama dengan ok
    if(category=="ok")
        spinnerCategory.performClick();

单击按钮时保持力量关闭。 我试过How to use putExtra() and getExtra() for string data,但是当我点击按钮

时仍然强行关闭

这里是QuoteList的完整代码

/**

*  * / public class QuoteList扩展了AbstractContentActivity {

Spinner spinnerPage;
Spinner spinnerCategory;
ListView lv;

ImageButton btn_expand;
ImageButton btn_logo;
Button btn_next;
Button btn_pre;

TextView tv_empty;
QuoteAdapter adapter;
DataHeper dataHeper;
ArrayList<Quote> listData;
private ProgressDialog dialogLoading;

private boolean isSort = false;
private int iStart =0;
int total;
ArrayList<String> listSpinerPage;
ArrayList<String> listSpinerCategory;

private int currentPostion =0;
private boolean hasGetTotal = false;
private boolean firstStart = true; 
/* (non-Javadoc)
 * @see com.android.jokesapp.jokes2.activity.AbstractActivity#getViewLayoutId()
 */
@Override
protected int getViewLayoutId() {
    // TODO Auto-generated method stub
    return R.layout.full_quotes_index;
}

/* (non-Javadoc)
 * @see com.android.jokesapp.jokes2.activity.AbstractContentActivity#initView()
 */
@Override
protected void initView() {
    // TODO Auto-generated method stub
    super.initView();
    spinnerPage = (Spinner)findViewById(R.id.fqi_page_no);
    spinnerCategory = (Spinner)findViewById(R.id.fqi_category);
    lv = (ListView)findViewById(R.id.fqi_ListView);
    btn_expand = (ImageButton)findViewById(R.id.fqi_expand_quotes_btn);
    btn_logo = (ImageButton)findViewById(R.id.actionbar_logo_btn);
    btn_next = (Button)findViewById(R.id.fqi_next_btn);
    btn_pre = (Button)findViewById(R.id.fqi_previous_btn);

    tv_empty = (TextView)findViewById(R.id.empty);

    SplashActivity.displayBanner(this);

    dataHeper = new DataHeper(getApplicationContext());
    listData = new ArrayList<Quote>();
    listSpinerPage = new ArrayList<String>();
    listSpinerCategory = new ArrayList<String>();


    Intent intent = getIntent();

    //ambil data putextra variabel category dari intent     
    String category = intent.getStringExtra("category");
    //if category sama dengan ok
    if(category=="ok")
        spinnerCategory.performClick();

    //spinnercategory performclick






    btn_expand.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (adapter.isExpand()) {
                adapter.setExpand(false);
                adapter.notifyDataSetChanged();
                btn_expand.setImageResource(R.drawable.actionbar_ic_resize);
                btn_expand.setAdjustViewBounds(true);
            }else{
                adapter.setExpand(true);
                adapter.notifyDataSetChanged();
                btn_expand.setImageResource(R.drawable.actionbar_ic_resize_pressed);
                btn_expand.setAdjustViewBounds(true);
            }
        }
    });

    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View v, int pos,
                long id) {
            // TODO Auto-generated method stub
            Intent i = new Intent(getApplicationContext(), QuoteView.class);
            i.putExtra(Constants.Bundle_quote, listData.get(pos));
            currentPostion = pos;
            startActivity(i);
        }
    });

    btn_logo.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent i = new Intent(getApplicationContext(), MainActivity.class);
            startActivity(i);
            QuoteList.this.finish();
        }
    });

}

/* (non-Javadoc)
 * @see com.android.jokesapp.jokes2.activity.AbstractActivity#onResume()
 */
@Override
protected void onResume() {
    new GetData().execute();
    super.onResume();
}
/**
 * get data task
 * @author ThangTB
 *
 */
private class GetData extends AsyncTask<Object, Object, Object>{

    public GetData() {
    }
    /* (non-Javadoc)
     * @see android.os.AsyncTask#onPreExecute()
     */
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        dialogLoading = DialogLoading.Loading(activity,"Loading jokes...");
        dialogLoading.show();
    }
    /* (non-Javadoc)
     * @see android.os.AsyncTask#doInBackground(Params[])
     */
    @Override
    protected Object doInBackground(Object... params) {
        // TODO Auto-generated method stub
        if (!hasGetTotal) {
            total = dataHeper.getTotalQuotesNoFilter();
            if (total>0) {
                if (total>=50) {
                    for (int i = 1; i <= total-50; i+=50) {
                        String s = (i)+" - "+ (i+49);
                        listSpinerPage.add(s);
                    }

                    String s1 = listSpinerPage.get(listSpinerPage.size()-1);
                    String s2 = s1.substring(s1.indexOf("-")+1); 
                    int num =Integer.parseInt(s2.trim());
                    if ( num<total) {
                        listSpinerPage.add((num)+" - "+ total);
                    }
                }else{
                    listSpinerPage.add(1+" - "+ total);
                }

            }
            hasGetTotal = true;
        }

        return null;
    }

    /* (non-Javadoc)
     * @see android.os.AsyncTask#onPostExecute(java.lang.Object)
     */
    @Override
    protected void onPostExecute(Object result) {
        if (total>0) {
            new GetQuoteData(iStart, null,"").execute();
            if (firstStart) {
                tv_empty.setVisibility(View.GONE);
                //list
                CustomArrayAdapter spinnerAdapter = new CustomArrayAdapter(getApplicationContext(), 
                        R.layout.spinner_item_style, 
                        listSpinerPage);
                spinnerPage.setAdapter(spinnerAdapter);
                spinnerPage.setOnItemSelectedListener(onItemSelectedListener);
                //category
                listSpinerCategory = dataHeper.getCategory();
                CustomArrayAdapter catAdapter = new CustomArrayAdapter(getApplicationContext(),
                        R.layout.spinner_item_style,
                        listSpinerCategory);
                spinnerCategory.setAdapter(catAdapter);
                spinnerCategory.setOnItemSelectedListener(selectCategory);
            }

        }else{
            tv_empty.setVisibility(View.VISIBLE);
            dialogLoading.dismiss();
        }

        firstStart = false;
        super.onPostExecute(result);
    }
}

OnItemSelectedListener selectCategory =new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int pos,
            long id) {
        // TODO Auto-generated method stub
        String category = listSpinerCategory.get(pos);
        String sStart = listSpinerPage.get(pos);
        iStart = Integer.parseInt(sStart.substring(0, sStart.indexOf("-")-1).trim());
        new GetQuoteData(iStart, null, category).execute();
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }
};


OnItemSelectedListener onItemSelectedListener =new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int pos,
            long id) {
        // TODO Auto-generated method stub
        String sStart = listSpinerPage.get(pos);
        iStart = Integer.parseInt(sStart.substring(0, sStart.indexOf("-")-1).trim());
        new GetQuoteData(iStart, null, "").execute();
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }
};

OnItemSelectedListener onSpinnerSortItemSelectedListener =new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int pos,
            long id) {
        // TODO Auto-generated method stub
        String sStart;
        if (!isSort) {
            isSort =true;
            return;
        }else{
            sStart = listSpinerPage.get(spinnerPage.getSelectedItemPosition());
            iStart = Integer.parseInt(sStart.substring(0, sStart.indexOf("-")-1).trim());
            new GetQuoteData(iStart, null, "").execute();
        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {

    }
};

/**
 * get data task
 * @author ThangTB
 *
 */
private class GetQuoteData extends AsyncTask<Object, Object, Object>{
    private int start;
    private String sort;
    private String category = "";
    public GetQuoteData(int start, String sort, String category) {
        this.start = start;
        this.sort = sort;
        this.category = category;
    }
    /* (non-Javadoc)
     * @see android.os.AsyncTask#onPreExecute()
     */
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        if (null == dialogLoading) {
            dialogLoading = DialogLoading.Loading(activity,"Loading jokes...");
            dialogLoading.show();
        }else if (!dialogLoading.isShowing()) {
            dialogLoading = DialogLoading.Loading(activity,"Loading jokes...");
            dialogLoading.show();
        }

    }
    /* (non-Javadoc)
     * @see android.os.AsyncTask#doInBackground(Params[])
     */
    @Override
    protected Object doInBackground(Object... params) {
        // TODO Auto-generated method stub
        if (category.isEmpty()) listData = dataHeper.getQuoteByLimit(start, 50, sort);
        else listData = dataHeper.getQuoteByCategory(category);
        return null;
    }

    /* (non-Javadoc)
     * @see android.os.AsyncTask#onPostExecute(java.lang.Object)
     */
    @Override
    protected void onPostExecute(Object result) {

        adapter = new QuoteAdapter(getApplicationContext(), listData);
        adapter.setOnClickCheckBoxListener(new OnClickCheckBoxListener() {

            @Override
            public void OnClick(View v, Quote item, int pos) {
                // TODO Auto-generated method stub
                WriteLog.d(QuoteList.this.getLocalClassName(), "click");
                if (item.getIs_favourist()==0) {
                    dataHeper.AddFavourites(String.valueOf(item.getId()));
                    listData.get(pos).setIs_favourist(1);
                }else{
                    dataHeper.DeleteFavourites(String.valueOf(item.getId()));
                    listData.get(pos).setIs_favourist(0);
                }

                adapter.setData(listData);
                adapter.notifyDataSetChanged();

            }
        });
        if (listData.size()==0) {
            tv_empty.setVisibility(View.VISIBLE);
        }else{
            tv_empty.setVisibility(View.GONE);
        }
        lv.setAdapter(adapter);
        lv.setSelection(currentPostion);
        currentPostion =0;
        if (dialogLoading.isShowing()) {
            dialogLoading.dismiss();
        }

        super.onPostExecute(result);
    }
}

}

1 个答案:

答案 0 :(得分:0)

只需使用以下代码即可将数据读取为

Bundle extras = getIntent().getExtras();
if(extras == null) {
Toast.makeText(getApplicationContext(), "No Data Found...", Toast.LENGTH_LONG).show();
}
else{
String category = extras.getString("category");
if(category.equals("ok"))
 {
    Toast.makeText(getApplicationContext(), "category Value :"+category, Toast.LENGTH_LONG).show();
 }

}

比较两个字符串还有一件事你应该使用.equals()方法。 [==仅比较参考文献]

希望这能解决您的问题。