相关疑难解决方法(0)

108
推荐指数
7
解决办法
9万
查看次数

Android:如何获得模态对话框或类似的模态行为?

这些天我正在研究在Android中模拟模态对话框.我已经google了很多,有很多讨论,但很遗憾没有太多的选择来获得它的模态.这里有一些背景,
对话框,模态对话框和Blockin
对话框/ AlertDialogs:如何在对话框启动时"阻止执行"(.NET风格)

没有直接的方法来获得模态行为,然后我想出了3个可能的解决方案,
1.使用对话框主题的活动,就像这个线程所说的那样,但我仍然无法使主要活动真正等待对话活动返回.主要活动转为停止状态,然后重新启动.
2.构建一个工作线程,并使用线程同步.但是,对于我的应用程序来说,这是一个巨大的重构工作,现在我在主UI线程中有一个主要活动和服务.
3.当存在模态对话框时,在循环内接管事件处理,并在对话框关闭时退出循环.实际上,这是构建一个真正的模态对话框的方式,就像它在Windows中的确切做法一样.我仍然没有这样的原型.

我仍然想用一个以对话为主题的活动模拟它,
1.通过startActivityForResult()启动对话活动
2.从onActivityResult()获取结果
这里有一些来源

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    MyView v = new MyView(this);
    setContentView(v);
}

private final int RESULT_CODE_ALERT = 1;
private boolean mAlertResult = false;
public boolean startAlertDialog() {
    Intent it = new Intent(this, DialogActivity.class);
    it.putExtra("AlertInfo", "This is an alert");
    startActivityForResult(it, RESULT_CODE_ALERT);

    // I want to wait right here
    return mAlertResult;
}

@Override
protected void onActivityResult (int requestCode, int resultCode, …
Run Code Online (Sandbox Code Playgroud)

android synchronization modal-dialog android-activity

53
推荐指数
6
解决办法
9万
查看次数

8
推荐指数
3
解决办法
7748
查看次数

Android Spinner数据视图未在重新选择的项目上更新

我正在尝试将Spinner自定义为多选.我已经成功地使它可以多选,但是当重新选择一个项时,微调器内部的视图不会更新.

问题

当一个项目重新被选中时Spinner,getView()我的SpinnerAdapter被调用产生了View我想要它的东西,但是View不知怎的,它不会被显示出来.我已经完成了调试器中的所有操作,并且在选择不同的项目或重新选择相同的项目时,我找不到任何差异.我已经浏览了所有的代码Spinner AbsSpinner,AdapterView而且我找不到可能导致这种情况的原因.

例如

微调器有6个项目:选择1-6.微调器起源于未选中的所有项目. 选择选项1,2和4.微调器内的视图正确显示"选择1,选择2,选择4".

选择4未被选中(就Spinner而言,重选).从列表中正确取消选中选项4,但微调器内的视图不会更新. 它仍然显示"选择1,选择2,选择4".单步执行调试器,我的SpinnerAdapter上的getView()会被调用.出于某种原因,View实际上并未显示.

选择2未被选中(这不是对Spinner的"重新选择").这里的一切都按预期运作.列表项和Spinner内的视图都会更新.

一些代码

多选Spinner

public class MultiSelectSpinner extends Spinner {

    private OnItemSelectedListener listener;

    public MultiSelectSpinner(Context context) {

        super( context );
    }

    public MultiSelectSpinner(Context context, AttributeSet attrs) {

        super( context, attrs );
    }

    public MultiSelectSpinner(Context context, AttributeSet attrs, int defStyle) {

        super( context, attrs, defStyle );
    }

    @Override
    public void setSelection( int position ) { …
Run Code Online (Sandbox Code Playgroud)

android android-spinner

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

在A点和B点之间播放音频

如何设置From和To Timestamp标记并在音频文件的这两个点之间播放媒体?我没有在Android中看到MediaPlayer的监听器API.想知道如何实现这一目标?

我的情况是这样的:将音频文件分成许多这样的部分,让用户按照自己的意愿交互式播放/重放选择部分.

例如,假设一个小的音频文件被分成3个部分(A --- B --- C --- D),即AB,BC和CD.用户选择BC部分并选择播放.然后音频从B点开始播放并在到达C点时停止.用户可以再次播放BC部分或选择继续下一部分.

虽然更容易决定找出起点并使用mediaPlayer.seekTo(int)API,但我怎么能让音频停在终点?这方面最好的方法是什么?

非常感谢您的帮助.

audio android android-mediaplayer

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

来自线程的警报对话 - Android

我有一个线程,每六秒钟就会向数据库发送一次GPS坐标,并且我会检查用户是否在一个已定义的区域内.如果用户不在该位置,我想要一个警告对话框,通知他们他们超出范围,如果他们在该区域内,我想要一个告诉他们在范围内的对话框.我检查工作正常,但我已经尝试过,我很确定我无法在后台线程上添加对话框.我已经阅读了一些关于使用处理程序的内容,但我不确定如何实现它.如果您有任何建议我会很感激!谢谢.

这是我FindLocation.java从主要活动(MainActivity.java)调用的方式:

new FindLocation(getBaseContext()).start(usr_id1); //sends a user id with it
Run Code Online (Sandbox Code Playgroud)

下边是 FindLocation.java

public class FindLocation extends Thread {

public boolean inJurisdiction;
public boolean AlertNotice = false;
private LocationManager locManager;
private LocationListener locListener;

Context ctx;
public String userId;

public FindLocation(Context ctx) {
     this.ctx = ctx;
}

 public void start(String userId) {
        this.userId = userId;
        super.start();
      }

 @Override
public void run() {
     Looper.prepare();
    final String usr = userId;      

    //get a reference to the LocationManager
    locManager = (LocationManager) ctx.getSystemService(Context.LOCATION_SERVICE); …
Run Code Online (Sandbox Code Playgroud)

java multithreading android handler android-alertdialog

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

计时器线程刷新android上的片段

我在android中实现了一个线程,每1秒刷新一次片段(一些文本列表).

它在线程调用fragment方法时给出运行时错误.这是我的代码

public class RunThreadExtended extends Activity implements Runnable
{
public void run() {

 while(true)
 {  try {
    Thread.sleep(1000);
    AndroidListFragmentActivity.strup++;
    MyListFragment1 fragmentB = (MyListFragment1)getFragmentManager().findFragmentById(R.id.fragment1);
    fragmentB.updatefrag();
} catch (InterruptedException e) {
    e.printStackTrace();
}
  }}}
Run Code Online (Sandbox Code Playgroud)

如果我从Mainactivity调用片段方法,一切都可以工作,因为我需要在背景中每隔5秒刷新一次我已经实现的线程,但是它没有工作..pls建议解决方案......

android fragment

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