小编use*_*805的帖子

Android:Vertical ViewPager

有没有办法让它ViewPager不是水平滚动,而是垂直滚动?!

android android-viewpager

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

IllegalStateException("你不能设置Dialog的OnCancelListener或OnDismissListener")

这个DialogFragment实现导致了

IllegalStateException("你不能设置Dialog的OnCancelListener或OnDismissListener")

.为什么?解?

public class OkCThreadDialog1 extends DialogFragment{

DialogInterface.OnCancelListener onCancelListener;

public OkCThreadDialog1(){
}

public static OkCThreadDialog1 newInstance(String title, String message) {
    OkCThreadDialog1 frag = new OkCThreadDialog1();
    Bundle args = new Bundle();
    args.putString("title", title);
    args.putString("message", message);
    frag.setArguments(args);
    return frag;
}


public Dialog onCreateDialog(Bundle savedInstanceState){

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());


    builder .setTitle(getArguments().getString("title"))
            .setMessage(getArguments().getString("message"))
            .setOnCancelListener(onCancelListener)
            .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                }})
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    getDialog().cancel();
                }});

    return builder.create();
} …
Run Code Online (Sandbox Code Playgroud)

android android-dialogfragment

35
推荐指数
2
解决办法
9981
查看次数

Android:layout_weight在以编程方式设置时无法正常工作

我以TableRow layout_weight编程方式设置时遇到问题.以下代码是TableLayout膨胀的table_body元素:

<TableLayout
     android:layout_width="match_parent"
     android:layout_height="0px"
     android:layout_weight="1"
     android:weightSum="1">
<TableLayout>
Run Code Online (Sandbox Code Playgroud)

我想在TableLayout..中只显示10行,为此我用编程方式添加TableRow元素,这是代码:

while(i<10){
    TableRow row = (TableRow) ((Activity) context).getLayoutInflater().
        inflate(R.layout.body_row, table_body, false);

    TableRow.LayoutParams row_params = 
        new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, 0, 0.1f);

    table_body.addView(row, row_params);

    i++;
}
Run Code Online (Sandbox Code Playgroud)

body_row.xml有这段代码:

<TableRow>
    <TextView 
        android:text="row1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</TableRow>
Run Code Online (Sandbox Code Playgroud)

这个代码TableLayout没有划分为10个相等的空格(正如我想要的那样),但是行只用最后一行结尾和TableLayout结尾之间的空格结果包装它们的内容.我做错了什么?谢谢!!

android android-layout

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

无法使用意图(Gmail)从我的应用发送包含附件的电子邮件

我正在尝试使用Intent发送sdcard文件夹中包含的文件(.log文件).这是代码:

public void sendMail() {
            Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
            intent.setType("text/plain");
            intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"name.surname@gmail.com"});
            intent.putExtra(Intent.EXTRA_SUBJECT, "Log files");
            intent.putExtra(Intent.EXTRA_TEXT, "body");
            //has to be an ArrayList
            ArrayList<Uri> uris = new ArrayList<Uri>();
            //convert from paths to Android friendly Parcelable Uri's
            if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
                File root = Environment.getExternalStorageDirectory();

                File logfolder = new File(root, "log");


                for (String file : logfolder.list()){
                    Uri u = Uri.parse(file);
                    uris.add(u);
                }
                intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
                startActivity(Intent.createChooser(intent, new String("Send mail...")));
            }

        }
Run Code Online (Sandbox Code Playgroud)

我从菜单中选择Gmail.Gmail打开后,会正确显示包含收件人,主题,文本和附件的邮件.邮件被发送没有错误,但我收到状态栏通知,说"无法显示附件"!事实上,收件人正确收到电子邮件但没有附件.我无法弄清问题是什么.为什么附件没有被发现?请帮我!!

android email-attachments android-intent

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

Android:AsyncTask onPreExecute()方法不在UI线程中执行

我有一个从线程执行的AsyncTask .在onPreExecute()方法中我想改变一些TextView但我得到以下错误(回顾):

05-07 11:53:02.039: E/AndroidRuntime(7062): FATAL EXCEPTION: processBarcodeThread
05-07 11:53:02.039: E/AndroidRuntime(7062): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
.....
05-07 11:53:02.039: E/AndroidRuntime(7062):     at android.widget.TextView.setText(TextView.java:2573)
05-07 11:53:02.039: E/AndroidRuntime(7062):     at it.mbm.droid.activity.fragment.LabelAnagFragment$ReadFromServerTask.onPreExecute(LabelAnagFragment.java:301)
05-07 11:53:02.039: E/AndroidRuntime(7062):     at android.os.AsyncTask.execute(AsyncTask.java:391)
Run Code Online (Sandbox Code Playgroud)

这意味着onPreExecute()不会在UI线程上执行,但根据Android文档:

onPreExecute(),在执行任务之前在UI线程上调用.此步骤通常用于设置任务,例如通过在用户界面中显示进度条.

那么,我在哪里做错了?

android thread-safety android-asynctask

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

Android:将结果发送到清理BackStack顶部的Activity

我有3个活动:A,B,C.

我希望活动的工作方式如下:

一个startActivityForResult B; B可以启动C或将结果发送给A; C可以返回B或将结果发送给A.

当B将结果发送给A时,必须从Backstack中删除B. 当C将结果发送到A时,必须从Backstack中删除B和C.

我无法从C向A发送结果.这意味着A必须重新发送(未重新发送),并且必须调用onActivityResult()来处理结果:

我已尝试使用此代码,但重新创建了A并且未调用onActivityResult()!

public class C extends Activity{
    sendResultToA(){
        Intent i = new Intent(getActivity(), A.class);
        i.putExtra("dataBean", dataBean);
        i.putExtra("args", "save");
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        getActivity().setResult(Activity.RESULT_OK, i);
        startActivity(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么想法可以解决这个问题?谢谢

android android-activity back-stack

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