小编Ali*_*Ali的帖子

在Android中扩展AlertDialog.Builder

我想创建一个扩展的类AlertDialog.Builder:

public class AlertBuilder extends AlertDialog.Builder {

    private MultiAdapter mAdapter;
    private ListView lv;
    private Activity mActivity;
    private Context mContext;
    private CheckedTxtView checkedItem;

    public AlertBuilder(Context context, Activity activity, final List<CheckedTxtView> mList) {
        super(context);
        this.mActivity = activity;
        this.mContext = context;

        this.setTitle("Test");
        LayoutInflater inflater = activity.getLayoutInflater();
        View dialoglayout = inflater.inflate(R.layout.main_filter, null);
        this.setView(dialoglayout);

        mAdapter = new MultiAdapter(context, mList); 
        lv = (ListView) dialoglayout.findViewById(R.id.list);
        lv.setAdapter(mAdapter);
        lv.setOnItemClickListener(new ItemClick());
    }

    class ItemClick implements OnItemClickListener {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) { …
Run Code Online (Sandbox Code Playgroud)

java android

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

在Android studio中为单元测试配置测试文件夹

我在android studio项目中添加了一个单元测试文件夹.默认文件夹是andoidTest,但我在测试中添加了一个新文件夹和名称.(如robolectric样品测试)

当我在我的build.gradle中添加测试依赖项时,例如

testCompile("junit:junit:${junitVersion}")
testCompile ("org.robolectric:robolectric:${robolectricVersion}")
Run Code Online (Sandbox Code Playgroud)

它们不会被添加到项目下的外部库中,但是当我使用默认配置和使用时androidTestCompile,它可以添加外部库.

然后我想也许我应该在gradle中使用setRoot进行测试,所以我在build.gradle的android标签中使用了以下内容:

sourceSets {
        androidTest.setRoot('src/test')
}
Run Code Online (Sandbox Code Playgroud)

但仍然存在问题.我可以运行测试gradlew,但是测试文件夹中的类的导入不适用,也没有可见的外部库用于测试目的.

任何人都有解决此问题的方法吗?

android unit-testing gradle robolectric android-gradle-plugin

8
推荐指数
2
解决办法
8702
查看次数

当我使用导航组合在深色主题中导航到屏幕时,屏幕闪烁

我在我的应用程序中使用 Navigation-Compose :

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            ComposeTheme {
                val navController = rememberNavController()
                NavHost(navController = navController, startDestination = Screens.Dashboard.title) {
                    composable(Screens.Dashboard.title) {
                        DashboardScreen(navController)
                    }
                    composable(
                        Screens.Section.title, arguments = listOf(
                            navArgument(LINK) {
                                type = AssetParamType()
                            }
                        )
                    ) {
                        SectionDetailsScreen(navController)
                    }
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我在每个屏幕上都有一个单独的应用程序栏,例如:

@Composable
fun DashboardScreen(
    navController: NavHostController,
    viewModel: DashboardViewModel = hiltViewModel()
) {
    Scaffold(
        topBar = {
            TopAppBar(
                title = {
                    Box(
                        contentAlignment = Alignment.Center,
                        modifier = Modifier.fillMaxSize()
                    ) {
                        Text(text = stringResource(id …
Run Code Online (Sandbox Code Playgroud)

android navigation-compose

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

在Internet上发布我的RESTful Web服务

我在服务器数据库和移动应用程序(Android,iPhone)之间使用Jersey开发了一个RESTful Web服务mySQL.

Hibernate在Web服务中使用与数据库通信,然后将我DAOs连接到Jersey服务.

我的操作系统是Windows7-64bit.眼下Web服务上运行Tomcat 7locathost.如何在Internet上发布我的Web服务?什么是最好的方法?例如,我可以使用亚马逊网络服务Apache HTTP Server吗?或者可能是其他Web服务器,例如: Web服务器 - 示例

iphone rest android tomcat web-services

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

选项卡+在Android中滑动以获取所有API级别

我的计划是为所有Android版本创建一个包含Tabs + Swipe的Activity.如果我们从默认的Android项目设置它,它至少支持API 11.

Sherlock,我们有两个项目名称:选项卡导航,选项卡导航(折叠)包括选项卡但不包括滑动.他们的样本中有问题#240有错误(当标签处于折叠模式(横向)并且所选项目未更新时向左/向右滑动).

你知道任何解决这个问题的示例代码吗?

java android actionbarsherlock

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

在支持库中设置FloatingActionButton的边框颜色

在支持库中引入了FloatingActionButton.有一个选项可以设置按钮的边框宽度app:borderWidth="2dp",但设置边框颜色怎么样?

我为该porpuse创建了一个自定义drawable,例如:

<item>
     <shape android:shape="oval">
         <solid android:color="@color/color1" />
         <stroke android:width="2dp" android:color="@android:color/white" />
     </shape>
</item>
Run Code Online (Sandbox Code Playgroud)

并尝试使用FloatingActionButton的两个android:backgroundapp:backgroundTint属性来设置背景.他们没有工作.请注意,app:backgroundTint似乎只是为了接受颜色而不是可绘制的

有人知道任何解决方法吗?

android android-support-library floating-action-button

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

使用google-services.json时的autoActivityTracking

我在google-services.json的内容中读到了google-services.json的用法吗?:在公开发布您的应用程序后,如果没有json文件,它将无法运行.

GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
mTracker = analytics.newTracker(R.xml.global_tracker);
Run Code Online (Sandbox Code Playgroud)

我在另一篇文章中读过autoActivityTracking.我们还可以创建一个xml资源文件,res/xml/并设置我们要跟踪的活动:

        <string name="ga_trackingId">UA-XXXXXX-X</string>

        <bool name="ga_autoActivityTracking">true</bool>

        <screenName name="com.example.android.dinnerapp.MainActivity">
            Main screen
        </screenName>

        <screenName name="com.example.android.dinnerapp.OrderDinnerActivity">
            Order dinner
        </screenName>

        <screenName name="com.example.android.dinnerapp.RemoveMealActivity">
            Eradicate dinner
        </screenName>

        <screenName name="com.example.android.dinnerapp.ShowDinnerActivity">
            Show dinner
        </screenName>

        <screenName name="com.example.android.dinnerapp.ShowRecipeActivity">
            Show recipe
        </screenName>
Run Code Online (Sandbox Code Playgroud)

并使用以下方式进行设置:

GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
mTracker = analytics.newTracker(R.xml.track_app);
Run Code Online (Sandbox Code Playgroud)

我想知道当我们使用json文件时它是如何可行的?

android google-analytics

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

对于使用Jersey的JAX-RS,在hibernate资源类中使用连接表的多对一

我正在使用Jersey实现RESTful Web服务.我使用hibernate与数据库(mySQL)进行通信.我的hibernate资源类包括:

@Entity
public class Activity {

    @Id
    @GeneratedValue
    private long id;

@ManyToOne
    @JoinTable(name="category_activity",
    joinColumns={@JoinColumn(name="activities_id")},
    inverseJoinColumns={@JoinColumn(name="Category_id")})
    private Category category;
}
Run Code Online (Sandbox Code Playgroud)

和类别:

@Entity
public class Category {

    @Id
    @GeneratedValue
    private long id;

    @OneToMany
    @Fetch(FetchMode.JOIN)
    @JoinTable(name = "category_activity",
    joinColumns = { @JoinColumn(name = "Category_id") }, 
    inverseJoinColumns = { @JoinColumn(name = "activities_id") })
    @JsonIgnore
    private Collection<Activity> activities;
}
Run Code Online (Sandbox Code Playgroud)

我用这个查询来获取活动:

session.createQuery("from Activity a join a.category cs where cs.id= :categoryId order by a.key").setLong("categoryId", categoryId).list();
Run Code Online (Sandbox Code Playgroud)

JSON格式的结果不正确:

[[{"id":26,"key":"other","name":"Other","cost":100.0,"category":{"id":10,"name":"General","description":""}},{"id":10,"name":"General","description":""}]]
Run Code Online (Sandbox Code Playgroud)

如你所见,类别被打印2次,我们周围有一个额外的[].当我在Category类中使用One-To-Many关系的另一种机制时,如:

@OneToMany(targetEntity = Activity.class, mappedBy = "category", fetch = …
Run Code Online (Sandbox Code Playgroud)

rest hibernate hql jersey

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

使用Jersey的RESTful Web服务的会话管理

我正在我的应用程序和MySQL 之间使用Jersey开发Restful Web ServiceAndroid, iPhone.我还Hibernate用来将数据映射到数据库.

我有一个sessionId(键).它是在用户登录系统时生成的.

User课堂上:

public Session daoCreateSession() {
    if (session == null) {
        session = new Session(this);
    } else {
        session.daoUpdate();
    }
    return session;
}
Run Code Online (Sandbox Code Playgroud)

Session课堂上:

Session(User user) {
    this.key = UUID.randomUUID().toString();
    this.user = user;
    this.date = new Date();
}

void daoUpdate() {
    this.key = UUID.randomUUID().toString();
    this.date = new Date();
}
Run Code Online (Sandbox Code Playgroud)

当用户成功登录系统时,我将此sessionId发送到移动应用客户端.然后,当我想根据登录用户从数据库中获取一些信息时,我将此会话密钥作为in the REST Services每个请求的身份验证.

例如,对于用户参与的项目列表,我使用 client.GET(SERVER_ADDRESS/project/get/{SessionID})

不确定的client.GET(SERVER_ADDRESS/project/get/{username}).

如果它不是有效的会话密钥,我将向客户端发送403禁止代码.你也可以看看这里 …

rest spring hibernate jersey spring-security

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

使用 InetAddress 类中的 getHostAddress() 以编程方式获取默认网关

我想以编程方式在 Android 中获取默认网关。我首先找到了以下解决方案:@Sandeep 回答的代码中路由器的 IP 地址

然后我意识到formatIpAddress已被弃用。如文档所述:我们可以getHostAddress()

我还认为,这更好,因为我可能不需要像@Sandeep 在他的回答中提到的那样为我的应用程序添加新权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
Run Code Online (Sandbox Code Playgroud)

我使用了以下解决方案get default gateway,例如:How to get default gateway using Ethernet, not wifi

public static String getLocalIpAddress() {
        try {
            for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
                NetworkInterface intf = en.nextElement();
                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
                    InetAddress inetAddress = enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
                        return inetAddress.getHostAddress();
                    }
                }
            }
        } catch (SocketException ex) …
Run Code Online (Sandbox Code Playgroud)

ip android gateway tcp-ip

6
推荐指数
0
解决办法
2719
查看次数