小编NiP*_*Pfi的帖子

使用EditText的AlertDialog,自动打开软键盘并专注于EditText不起作用

我正在尝试获得一段代码工作,它应该在显示时立即将EditText集中在AlertDialog中,然后自动打开软键盘.相反,它只会使屏幕变暗.

Builder builder = new Builder(this);
final EditText input = new EditText(this);
AlertDialog dialog = builder.create();
builder
    .setTitle(R.string.dialog_title_addsubject)
    .setMessage(R.string.dialog_addsubject)
    .setView(input)
    .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            String value = input.getText().toString();
            if (input.getText().toString().trim().length() == 0) {
                Toast.makeText(Main.this, R.string.input_empty, Toast.LENGTH_SHORT).show();
            } else {
                db.insertSubject(value);
                getData();
            }
         }
    })
    .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
        }
    });
    input.requestFocus();
    dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
    dialog.show();
Run Code Online (Sandbox Code Playgroud)

我尝试过很多方法,但没有办法.我希望你们能在这里帮助我.提前致谢!

android focus android-softkeyboard android-edittext android-alertdialog

37
推荐指数
2
解决办法
3万
查看次数

Android:使用SimpleCursorAdapter将数据从数据库获取到ListView

我正在编写一个Android应用程序,应该使用数据库来存储数据并从中读取数据.使用本教程(在archive.org上)我得到了创建数据库的应用程序,我可以创建新条目,但是,我不知道,如何读取数据库以获取ListView中存储的数据.我知道这个网站上有很多类似的问题,但似乎没有一个适用于这种方式,教程中的数据库也适用.

码:

import java.util.Calendar;

import maturarbeit.nicola_pfister.studenttools.database.DBAdapter;
import android.app.AlertDialog.Builder;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ListView;


public class Marks extends ListActivity {

DBAdapter db = new DBAdapter(this);

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.marks);
}

@Override
protected void onPause() {
    super.onPause();
    db.close();
}

@Override
protected void onResume() {
    super.onResume();
    db.open();

    getData();
}

@SuppressWarnings("deprecation")
private void getData() {
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
            android.R.layout.simple_list_item_1, 
            db.getAllMarks(), 
            new …
Run Code Online (Sandbox Code Playgroud)

database android listview simplecursoradapter

18
推荐指数
1
解决办法
7万
查看次数

Android应用内结算错误:非法操作状态(launchPurchaseFlow):未设置IAB帮助程序

我尝试使用Google提供指南设置 InApp购买捐赠,但是当我调用该活动时(如果成功与否则应该返回)但是它会抛出此错误:

In-app billing error: Illegal state for operation (launchPurchaseFlow): IAB helper is not set up
Run Code Online (Sandbox Code Playgroud)

使用此方法调用活动:

public boolean donation() {
        int success = 0;
        Intent intent = new Intent(Main.this, Donate.class);
        startActivityForResult(intent, success);
        if (success != 0) {
            return true;
        }
        else return false;
    }
Run Code Online (Sandbox Code Playgroud)

Donate类(我尝试使用指南编写)看起来像这样:

import java.math.BigInteger;
import java.security.SecureRandom;
import maturaarbeit.nicola_pfister.marks.R;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.util.Log;

public class Donate extends Activity {

    IabHelper mHelper;

    private static final String TAG …
Run Code Online (Sandbox Code Playgroud)

android in-app-purchase

5
推荐指数
2
解决办法
6467
查看次数

Firestore 的 Android 存储库模式

为了更好地分离关注点,我想实现一个处理所有 Firestore 交互的存储库。

目前,我的代码如下所示:

用户库:

public class UserRepository {

    private static final String TAG = "UserRepository";

    private FirebaseFirestore db = FirebaseFirestore.getInstance();
    private CollectionReference usersRef = db.collection("users");

    public Task<DocumentSnapshot> get(String email) {
        DocumentReference docRef = usersRef.document(email); // Users are referenced by email
        Log.d(TAG, "Checking DocumentReference exists for: " + email);
        return docRef.get();
    }
}
Run Code Online (Sandbox Code Playgroud)

主要活动

                final UserRepository userRepository = new UserRepository();

                userRepository.get(currentUser.getEmail()).addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
                    @Override
                    public void onSuccess(DocumentSnapshot documentSnapshot) {
                        Log.d(TAG, "DocumentSnapshot got");
                        // Do something with user
                    }
                }).addOnFailureListener(new OnFailureListener() …
Run Code Online (Sandbox Code Playgroud)

concurrency android repository-pattern firebase google-cloud-firestore

5
推荐指数
1
解决办法
3325
查看次数

如何使用ListView获取操作模式

我正在尝试使用动作模式获取上下文菜单,我可以通过长按它来选择ListView中的项目.我根据此引用创建了一个MultiChoiceListener,并创建了一个ItemLongClickListener,它将一个项设置为已选中,这是操作模式根据此引用工作所需的.

我的问题是,即使项目长时间点击动画正在播放,ActionMenu也不会膨胀.

ListView代码:

final ListView listView = (ListView) findViewById(android.R.id.list);
        listView.setAdapter(adapter);
        listView.setLongClickable(true);
        listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        listView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long id) {

            Cursor cursor = db.getSubject(id);
            String subject = null;
            try {
                subject = cursor.getString(cursor.getColumnIndex("subject"));
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Intent intent = new Intent(Main.this, Marks.class);
            intent.putExtra("selected", subject);
            startActivity(intent);
            }
        });
        listView.setOnItemLongClickListener(new OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                    int arg2, long …
Run Code Online (Sandbox Code Playgroud)

android listview android-inflate action-menu

1
推荐指数
1
解决办法
1万
查看次数