我正在构建自己的API,正在使用它:
1)Android App 2)桌面应用程序
我的一个网址是:http://api.chatapp.info/order_api/files/getbeers.php,我的用户通过JSON从我的数据库中获取数据.我最近想到用API Key创建身份验证.
关于如何做的任何想法?或者我必须做一些像http://api.chatapp.info/order_api/files/getbeers.php?api_key=这样的事情,然后将GET方法与存储在我数据库中的一些密钥进行比较?
有任何想法吗?
我面临一个奇怪的问题.我正在尝试从中删除所选项目mysql database.虽然查询的所有内容都是正确的,但我测试了查询并且它可以工作,但它不会从数据库中删除项目.
代码:
private class DeleteData extends AsyncTask<String, Void, List<CartList>> {
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(CartActivity.this);
progressDialog.setMessage(getString(R.string.get_stocks));
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setIndeterminate(true);
progressDialog.setCancelable(false);
progressDialog.show();
}
@Override
protected List<CartList> doInBackground(String... params) {
nameValuePairs = new ArrayList<>();
cartItems = new ArrayList<>();
try {
url = new URL(params[0]);
httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setReadTimeout(10000);
httpURLConnection.setConnectTimeout(15000);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
deleteDataInDB();
outputStream = httpURLConnection.getOutputStream();
bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
bufferedWriter.write(StringGenerator.queryResults(nameValuePairs));
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
httpURLConnection.connect();
inputStream = new BufferedInputStream(httpURLConnection.getInputStream());
jsonResult = StringGenerator.inputStreamToString(inputStream, CartActivity.this); …Run Code Online (Sandbox Code Playgroud) 以下是我的依赖
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
Run Code Online (Sandbox Code Playgroud)
我的layout.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:fitsSystemWindows="true">
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottomBar"
style="@style/Widget.MaterialComponents.BottomAppBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:backgroundTint="@color/colorPrimary"
app:fabAlignmentMode="center"
app:fabCradleMargin="10dp"
app:fabCradleVerticalOffset="4dp"
app:navigationIcon="@drawable/ic_drawer" >
</com.google.android.material.bottomappbar.BottomAppBar>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_anchor="@id/bottomBar"
app:srcCompat="@drawable/ic_apps" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
上面的代码对我来说很好
但是,当我更新dependencies的material design
implementation 'com.google.android.material:material:1.1.0-alpha01'
Run Code Online (Sandbox Code Playgroud)
我遇到以下错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{neel.com.bottomappbar/neel.com.bottomappbar.MainActivity}: android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class com.google.android.material.bottomappbar.BottomAppBar
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2485)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2545)
at android.app.ActivityThread.access$1100(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1396)
at android.os.Handler.dispatchMessage(Handler.java:102) …Run Code Online (Sandbox Code Playgroud) 我正在构建一个当前从drawable文件夹中读取图像的应用程序.由于我不能在drawable中有子文件夹,我必须在assets文件夹中创建子文件夹并从那里加载图像.有什么方法可以创建一个List或ArrayList与资产子文件夹中的所有图像?
我的代码是这样的:
public class ImageAdapter extends BaseAdapter {
private Context mContext;
// Keep all Images in array
public Integer[] mThumbIds = {
R.drawable.pic_2,
R.drawable.pic_3, R.drawable.pic_4,
R.drawable.pic_5, R.drawable.pic_6,
R.drawable.pic_7, R.drawable.pic_8,
R.drawable.pic_9, R.drawable.pic_10,
R.drawable.pic_11, R.drawable.pic_12,
R.drawable.pic_13, R.drawable.pic_14,
R.drawable.pic_15
};
// Constructor
public ImageAdapter(Context c){
mContext = c;
}
@Override
public int getCount() {
return mThumbIds.length;
}
@Override
public Object getItem(int position) {
return mThumbIds[position];
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int …Run Code Online (Sandbox Code Playgroud) 嘿伙计们,我在我的应用程序中创建一个listView和一个浮动按钮,我希望隐藏和返回的效果取决于滚动状态.当ListView正在滚动时,按钮隐藏得很好,但是当滚动停止时,按钮不会返回到其初始位置.
有任何想法吗?
我的代码:
public class MainActivity extends ActionBarActivity {
private ImageButton btn;
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String[] items = {"Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11", "Item 12", "Item 13", "Item 14", "item 15"};
lv = (ListView)findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, items);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, …Run Code Online (Sandbox Code Playgroud) 嘿伙计们我想在一个内置到片段中的listview中实现搜索功能listview工作正常但是当我在edittext上键入搜索时它会消失
我的代码:
public class DrinksFragment extends Fragment {
private View rootView;
private ArrayAdapter<DrinksList> adapter;
private List<DrinksList> drinks;
private ListView lv;
ArrayList<DrinksList> mAllData;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.activity_drinks_fragment, container, false);
populateDrinksList();
doSearch();
return rootView;
}
private void doSearch() {
final EditText et = (EditText)rootView.findViewById(R.id.searchListDrinks);
et.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) …Run Code Online (Sandbox Code Playgroud) 嘿伙计们我已经建立了一个listview,其中我通过json从mysql解析数据.我想单击列表视图上的项目,并将所选项目的名称和价格提供给另一个活动.到目前为止我做过那些:
public void registerCallClickBack() {
ListView list = (ListView) findViewById(R.id.listView1);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View viewClicked,
int position, long id) {
Object o = parent.getItemAtPosition(position);
Intent intent = new Intent(MainActivity.this, StockItem.class);
intent.putExtra("name", o.toString());
//intent.putExtra("price", R.id.stock_price);
startActivity(intent);
}
});
}
Run Code Online (Sandbox Code Playgroud)
在StockItem.java中
TextView tv;
String name, ball;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_stock_item);
tv = (TextView)findViewById(R.id.stockView1);
Bundle extras = getIntent().getExtras();
if(extras!=null){
name = extras.getString("name");
}
tv.setText(name);
}
Run Code Online (Sandbox Code Playgroud)
它现在工作正常,但它给我一个{price =所选项目价格,名称=所选项目名称}的结果...我希望有2个textview与第一个有名称和第二个价格.怎么可能?
这就是我的ListView的创建方式.
public void ListDrawer() {
List<Map<String, String>> …Run Code Online (Sandbox Code Playgroud) 我面临一个奇怪的问题.我遵循本教程,以便在运行时为我构建的应用程序请求权限.问题在于,即使我检查设备是否使用Android M并且我在运行时请求权限,它也不显示对话框.
代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_configuration);
spinner = (Spinner)findViewById(R.id.database_selection_spinner);
button = (Button)findViewById(R.id.proceedBtn);
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(ConfigurationActivity.this, Manifest.permission.INTERNET) == PackageManager.PERMISSION_GRANTED){
accessWebService();
}else {
if (shouldShowRequestPermissionRationale(Manifest.permission.INTERNET)){
StringGenerator.showToast(ConfigurationActivity.this, "Internet Permission needs to be granted");
}
requestPermissions(new String[]{Manifest.permission.INTERNET}, AppConstants.PERMISSION_REQ_CODE);
}
}else {
accessWebService();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == AppConstants.PERMISSION_REQ_CODE){
if (grantResults[0] == PackageManager.PERMISSION_GRANTED){
accessWebService();
}else {
StringGenerator.showToast(ConfigurationActivity.this, "LOL");
}
}else { …Run Code Online (Sandbox Code Playgroud) android android-permissions android-6.0-marshmallow runtime-permissions
我有一个 AWS::EC2::VPCEndpoint 资源类型,我想获取其 DnsEntries 值,根据https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint。 html#aws-resource-ec2-vpcendpoint-return-values是 DNS 条目列表。我希望能够从列表中选择第一项,所以我尝试了这样的操作:
const vpcEndpoint = new ec2.CfnVPCEndpoint(this, "vpcendpoint", {
serviceName: "com.amazonaws.vpce.us-west-2.vpce-svc-xxxxxx",
vpcId: "vpc-123",
privateDnsEnabled: false,
subnetIds: ["subnet-123"],
vpcEndpointType: "Interface",
});
const fisrtDnsEntry = cdk.Fn.select(0, cdk.Fn.getAtt(vpcEndpoint.logicalId, "DnsEntries"))
Run Code Online (Sandbox Code Playgroud)
这是行不通的,因为Fn.select需要一个字符串数组,但Fn.getAtt返回IResolvable并且只有toString()方法。
知道我还能做什么吗?