Android 在启动Intent之前检查editText的值

Android 在启动Intent之前检查editText的值,android,android-studio,android-intent,Android,Android Studio,Android Intent,我有一个活动,可以获取搜索查询和用户希望看到的结果数。我正在查询GoogleBooksAPI,结果的最大数量是40 我如何使它能够使用户输入的数字高于40,默认情况下,将其设置为10,然后启动活动,否则,如果数字介于1和40之间,它将检索输入的数字 下面是包含代码的活动: BookSearch.java 公共类BookSearch扩展了AppCompative活动{ private String searchQuery; private String numberQuery; @Overrid

我有一个活动,可以获取搜索查询和用户希望看到的结果数。我正在查询GoogleBooksAPI,结果的最大数量是40

我如何使它能够使用户输入的数字高于40,默认情况下,将其设置为10,然后启动活动,否则,如果数字介于1和40之间,它将检索输入的数字

下面是包含代码的活动:

BookSearch.java 公共类BookSearch扩展了AppCompative活动{

private String searchQuery;
private String numberQuery;

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

    Button searchBtn = (Button)findViewById(R.id.search_button);
    final SearchView searchView = (SearchView)findViewById(R.id.search_view);
    final EditText editText = (EditText)findViewById(R.id.edit_text);

    searchBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            searchQuery = searchView.getQuery().toString();
            numberQuery = editText.getText().toString();

            Intent bookIntent = new Intent(BookSearch.this, MainActivity.class);
            bookIntent.putExtra("searchQuery",searchQuery);
            bookIntent.putExtra("numberQuery",numberQuery);

            startActivity(bookIntent);
        }
    });
}
}

MainActivity.java这将接收意图并将其放入构造函数URL

public static final String LOG_TAG = MainActivity.class.getName();
private static final int BOOK_LOADER_ID = 1;

private static final String GOOGLE_BOOKS = "https://www.googleapis.com/books/v1/volumes?q=";
private static final String MAX_RESULTS = "&maxResults=";

private String searchURL;
private String intentNumber;
private String intentSearch;
private BookAdapter mAdapter;

private RecyclerView mRecyclerView;

private TextView mErrorTextView;

private ProgressBar mProgressBar;

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

    Intent intent = getIntent();
    intentSearch = intent.getExtras().getString("searchQuery");
    intentNumber = intent.getExtras().getString("numberQuery");

    searchURL = GOOGLE_BOOKS + intentSearch + MAX_RESULTS + intentNumber;

    final List<Book> books = new ArrayList<>();

    mRecyclerView = findViewById(R.id.recyclerView);
    mErrorTextView = findViewById(R.id.error_textView);
    mProgressBar = findViewById(R.id.progressBar);

    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
    mRecyclerView.setLayoutManager(layoutManager);

    mAdapter = new BookAdapter(this, books);

    mRecyclerView.setAdapter(mAdapter);

    ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
    if (networkInfo != null && networkInfo.isConnected()) {
        LoaderManager loaderManager = getLoaderManager();
        loaderManager.initLoader(BOOK_LOADER_ID, null, this);
    } else {
        mProgressBar.setVisibility(GONE);
        mErrorTextView.setText(R.string.no_internet_connection);
    }
}

@Override
public Loader<List<Book>> onCreateLoader(int id, Bundle args) {
    return new BookLoader(this, searchURL);
}

@Override
public void onLoadFinished(Loader<List<Book>> loader, List<Book> books) {
    mAdapter.clear();

    if (books != null && !books.isEmpty()) {
        mProgressBar.setVisibility(GONE);
        mErrorTextView.setVisibility(GONE);
        mRecyclerView.setVisibility(View.VISIBLE);
        mAdapter.addAll(books);
    } else {
        mProgressBar.setVisibility(GONE);
        mRecyclerView.setVisibility(GONE);
        mErrorTextView.setVisibility(View.VISIBLE);
    }
}

@Override
public void onLoaderReset(Loader<List<Book>> loader) {
    mAdapter.clear();
}
public static final String LOG_TAG=MainActivity.class.getName();
私有静态最终int BOOK_LOADER_ID=1;
私有静态最终字符串GOOGLE_BOOKS=”https://www.googleapis.com/books/v1/volumes?q=";
私有静态最终字符串MAX_RESULTS=“&maxResults=”;
私有字符串搜索URL;
私有字符串intentNumber;
私有字符串搜索;
私人书屋;
私人回收视图mRecyclerView;
私有文本视图mErrorTextView;
私人ProgressBar mProgressBar;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent=getIntent();
intentSearch=intent.getExtras().getString(“搜索查询”);
intentNumber=intent.getExtras().getString(“numberQuery”);
searchURL=GOOGLE_BOOKS+intentSearch+MAX_RESULTS+intentNumber;
最终图书列表=新的ArrayList();
mRecyclerView=findViewById(R.id.recyclerView);
mErrorTextView=findviewbyd(R.id.error\u textView);
mProgressBar=findviewbyd(R.id.progressBar);
RecyclerView.LayoutManager LayoutManager=新的LinearLayoutManager(此);
mRecyclerView.setLayoutManager(layoutManager);
mAdapter=新的BookAdapter(此为books);
mRecyclerView.setAdapter(mAdapter);
ConnectivityManager connMgr=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_服务);
NetworkInfo NetworkInfo=connMgr.getActiveNetworkInfo();
if(networkInfo!=null&&networkInfo.isConnected()){
LoaderManager LoaderManager=getLoaderManager();
initLoader(BOOK_LOADER_ID,null,this);
}否则{
mProgressBar.setVisibility(已消失);
mErrorTextView.setText(R.string.no_internet_connection);
}
}
@凌驾
公共加载器onCreateLoader(int-id,Bundle-args){
返回新的BookLoader(此为searchURL);
}
@凌驾
公共void onLoadFinished(加载程序,列表簿){
mAdapter.clear();
if(books!=null&&!books.isEmpty()){
mProgressBar.setVisibility(已消失);
mErrorTextView.setVisibility(已消失);
mRecyclerView.setVisibility(View.VISIBLE);
mAdapter.addAll(书籍);
}否则{
mProgressBar.setVisibility(已消失);
mRecyclerView.setVisibility(已消失);
mErrorTextView.setVisibility(View.VISIBLE);
}
}
@凌驾
公共void onLoaderReset(加载器){
mAdapter.clear();
}

}

将addTextChangedListener设置为您的Edittext并处理进一步的事情:-

numberQuery .addTextChangedListener(new TextWatcher() {

   @Override
   public void afterTextChanged(Editable editable) {}

   @Override    
   public void beforeTextChanged(CharSequence s, int start,
     int count, int after) {
   }

   @Override    
   public void onTextChanged(CharSequence s, int start,
     int before, int count) {
      try
      {
      int n=Integer.valueOf(s);
      if(n>=40)
         numberQuery.setText("10");

      }
      catch(Exception e)
      {
       //handle exception like NumberFormatException, etc.
      }
   }
  });